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

标签 lodash

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

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/

相关文章:

javascript - 深度替换知道我们必须在其中注入(inject)值的对象中的属性值的值

javascript - 按键值过滤json对象

javascript - 将数组对象合并在一起 - lodash

javascript - 使用 lodash 获取深层嵌套对象中的父数组键

javascript - CSV 格式到带有运行总计的对象数组

javascript - lodash 将交替插入数组

javascript - 查找对象键并将其删除

javascript - 如何对混合文本和数字的数据进行排序?

javascript - 使用 _.orderBy 更改源数组

javascript - 如何将对象插入另一个根数组内的数组中