【问题标题】:How to do this using lodash?如何使用 lodash 做到这一点?
【发布时间】:2019-04-30 16:41:45
【问题描述】:

我有对象数组,例如

    [ { fName: 'Sohail',
    lName: 'Afzal',
    dob: 1995-07-08T19:00:00.000Z,
    gender: 'Male',
    phone: '(612)545-8924',
    phone1: '(123)456-7890',
    payorName: 'hashir',
    payorId: 12,
    affiliationDate: 2018-10-09T19:00:00.000Z },
  { fName: 'Joann',
    mName: 'Denise',
    lName: 'Gasner',
    dob: 1964-10-13T19:00:00.000Z,
    gender: 'Male',
    phone: '(612)990-8450',
    phone1: '(612)545-8924',
    payorName: 'Nouman Latif',
    payorId: 15,
    affiliationDate: 2018-10-10T19:00:00.000Z } ]

从对象中获取一些数据并存储在数组中,然后再次将数据推送到对象中。我需要将最后三个元素分组为单个数组名称 payInfo

输出想要像

[ { fName: 'Sohail',
        lName: 'Afzal',
        dob: 1995-07-08T19:00:00.000Z,
        gender: 'Male',
        phone: '(612)545-8924',
        phone1: '(123)456-7890',
        payInfo:[{payorName: 'hashir',
        payorId: 12,
        affiliationDate: 2018-10-09T19:00:00.000Z}]
       },
      { fName: 'Joann',
        mName: 'Denise',
        lName: 'Gasner',
        dob: 1964-10-13T19:00:00.000Z,
        gender: 'Male',
        phone: '(612)990-8450',
        phone1: '(612)545-8924',
        payInfo:[{payorName: 'Nouman Latif',
        payorId: 15,
        affiliationDate: 2018-10-10T19:00:00.000Z}] 
         } ]

需要用 lodash 解决这个问题。

【问题讨论】:

  • 您的数据令人困惑。什么键/道具连接付款人?一个有12,另一个有2个15
  • 是的,我更新了代码。基本上我需要将对象的最后三个元素分组到单个数组中。

标签: lodash


【解决方案1】:

你可以这样做:

const data = [{ fName: 'Sohail', lName: 'Afzal', dob: '1995-07-08T19:00:00.000Z', gender: 'Male', phone: '(612)545-8924', phone1: '(123)456-7890', payorName: 'hashir', payorId: 15, affiliationDate: '2018-10-09T19:00:00.000Z' }, { fName: 'Joann', mName: 'Denise', lName: 'Gasner', dob: '1964-10-13T19:00:00.000Z', gender: 'Male', phone: '(612)990-8450', phone1: '(612)545-8924', payorName: 'Nouman Latif', payorId: 15, affiliationDate: '2018-10-10T19:00:00.000Z' } ]

const result = _.map(data, x => 
   _.omit(_.extend(x, { payInfo: [{ 
      payorName: x.payorName, 
      payorId: x.payorId, 
      affiliationDate: x.affiliationDate 
   }] 
}), ['payorName', 'payorId', 'affiliationDate']))

console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>

使用_.extend 装饰对象并使用_.omit 删除旧字段。

使用 ES6,您可以使用 Array.mapdestructuring

const data = [{ fName: 'Sohail', lName: 'Afzal', dob: '1995-07-08T19:00:00.000Z', gender: 'Male', phone: '(612)545-8924', phone1: '(123)456-7890', payorName: 'hashir', payorId: 15, affiliationDate: '2018-10-09T19:00:00.000Z' }, { fName: 'Joann', mName: 'Denise', lName: 'Gasner', dob: '1964-10-13T19:00:00.000Z', gender: 'Male', phone: '(612)990-8450', phone1: '(612)545-8924', payorName: 'Nouman Latif', payorId: 15, affiliationDate: '2018-10-10T19:00:00.000Z' } ]

const result = data.map(({payorName, payorId, affiliationDate, ...x}) => {
   x.payInfo = [{ payorName, payorId, affiliationDate }]
   return x
})

console.log(result)

或者通过Object.assign更简洁:

const data = [{ fName: 'Sohail', lName: 'Afzal', dob: '1995-07-08T19:00:00.000Z', gender: 'Male', phone: '(612)545-8924', phone1: '(123)456-7890', payorName: 'hashir', payorId: 15, affiliationDate: '2018-10-09T19:00:00.000Z' }, { fName: 'Joann', mName: 'Denise', lName: 'Gasner', dob: '1964-10-13T19:00:00.000Z', gender: 'Male', phone: '(612)990-8450', phone1: '(612)545-8924', payorName: 'Nouman Latif', payorId: 15, affiliationDate: '2018-10-10T19:00:00.000Z' } ]

const result = data.map(({payorName, payorId, affiliationDate, ...x}) => 
  Object.assign(x, {payInfo: [{ payorName, payorId, affiliationDate }]}))

console.log(result)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-19
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-03
    相关资源
    最近更新 更多