gpt4 book ai didi

Lodash:按对象数组的属性进行联合

转载 作者:行者123 更新时间:2023-12-03 18:51:16 26 4
gpt4 key购买 nike

我有一个对象数组,其中有一个数组属性,我试图将其合并在一起。我已经用下面的代码解决了这个问题,它显示了我正在尝试做的事情:

var dest = [];
_.forEach(parentArray, function (parentItem) {
_.forEach(parentItem.arrayProperty, function(arrayPropertyItem) {
dest.push(arrayPropertyItem);
});
});

这很好用。但我想知道 lodash 是否有任何快捷方法。我尝试使用 unionBy/unionWith,但似乎没有达到预期的结果。相反,只需将parentArray 还给我即可。

最佳答案

看看flatMapflatten 。如果我理解你的数据结构(以及你想要完成的任务),你应该能够做这样的事情

var dest = _.flatMap(parentArray, function(item) {
return item.arrayProperty;
});

如有必要,您可以根据您想要实现的目标,在 item.arrayProperty 上使用 _.flatten。如果 arrayProperty 包含数组的数组,则输出也将具有嵌套数组。如果更深入,您可能需要使用 flattenDeep .

var parentArray = [{item: 'one', children: [1, 2, 3]}, {item: 'two', children: [4, 5, 6]}];

var dest = _.flatMap(parentArray, function(item) {
return item.children;
});

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

您可以通过在 children 属性中使用嵌套数组并根据需要添加 _.flatten 来使用它。

关于Lodash:按对象数组的属性进行联合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43593734/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com