Javascript 如何使用lodash将属性从数组传递到每个嵌套子数组?

Javascript 如何使用lodash将属性从数组传递到每个嵌套子数组?,javascript,loops,lodash,Javascript,Loops,Lodash,大家好,让我们举一个例子: var legitTask = [ { "guid": "beb033fd-f2ca-4bde-a732-4396d560b216", "isActive": false, "friends": [ { "id": 33, "name": "Rosalind Kaufm

大家好,让我们举一个例子:

var legitTask = [
  {
    "guid": "beb033fd-f2ca-4bde-a732-4396d560b216",
    "isActive": false,
    "friends": [
      {
        "id": 33,
        "name": "Rosalind Kaufman"
      },
      {
        "id": 41,
        "name": "Marion Armstrong"
      },
      {
        "id": 52,
        "name": "Sonia Baxter"
      }
    ]
  },
  {
    "guid": "2ac71ecb-4d7e-4c81-bd54-f6d17ce141a9",
    "isActive": true,
    "friends": [
      {
        "id": 023,
        "name": "Viola Gillespie"
      },
      {
        "id": 31,
        "name": "Anita Bass"
      },
      {
        "id": 12,
        "name": "Galloway Townsend"
      }
    ]
  },
  {
    "guid": "07acf598-cb57-490f-a42c-3a0ee0a543fc",
    "isActive": true,
    "friends": [
      {
        "id": 0,
        "name": "Lou Elliott"
      },
      {
        "id": 71,
        "name": "Christina Spence"
      },
      {
        "id": 82,
        "name": "Doris Garner"
      }
    ]
  }
]
所需的最终结果:仅将每个家长的isActive属性分配给每个好友

 [        {
            "id": 33,
            "name": "Rosalind Kaufman",
             "isActive": false
         },
         {
            "id": 41,
            "name": "Marion Armstrong",
             "isActive": false
         },
         {
            "id": 52,
            "name": "Sonia Baxter",
             "isActive": false
         }, {
            "id": 023,
            "name": "Viola Gillespie"
            "isActive": true
         },
         {
            "id": 31,
            "name": "Anita Bass"
            "isActive": true
         },
         {
            "id": 12,
            "isActive": true
            "name": "Galloway Townsend"
         },
         {
            "id": 0,
            "isActive": true,
            "name": "Lou Elliott"
         },
         {
            "id": 71,
            "isActive": true,
            "name": "Christina Spence"
         },
         {
            "id": 82,
            "isActive": true,
            "name": "Doris Garner"
         }
      ]
因此,我的第一步是选择朋友和想要的财产:

let firstRound  = _.map(legitTask, task =>{
   return _.pick(task, ['isActive', 'friends']);
});
太好了!我现在有了想要的财产和每个朋友,现在如何将财产传递给每个朋友?(假设我有一个很大的列表,所以“最好的方法”是必要的,是的,我知道我可以一个接一个地循环,但那真的会扼杀性能)


说到性能,我总是发现vanilla JS比任何库实现都要快。因此,出于这个原因,我总是更喜欢香草JS。这里是一个非lodash.js解决方案,它将所需的值放入数组中,不过您可以简单地深度克隆原始数组:

const res=legitTask
.map(obj=>{
返回obj.friends.map(friend=>{
friend.isActive=obj.isActive;
回报朋友;
});
})

.flat()说到性能,我总是发现vanilla JS比任何库实现都要快。因此,出于这个原因,我总是更喜欢香草JS。这里是一个非lodash.js解决方案,它将所需的值放入数组中,不过您可以简单地深度克隆原始数组:

const res=legitTask
.map(obj=>{
返回obj.friends.map(friend=>{
friend.isActive=obj.isActive;
回报朋友;
});
})
.flat()您可以这样尝试

  _.reduce(legitTask, (acc, {friends, ...rest}) => acc.concat(_.map(friends, friend => ({...friend,...rest }))), [])
你可以这样试试

  _.reduce(legitTask, (acc, {friends, ...rest}) => acc.concat(_.map(friends, friend => ({...friend,...rest }))), [])

喜欢香草的方法,喜欢香草的方法,