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 }))), [])
喜欢香草的方法,喜欢香草的方法,