首页 > 解决方案 > 如果其中一个值匹配,则将对象的值合并到一个新数组中

问题描述

我有一组看起来像这样的对象:

const myArray = [
  { taxonomy: 'Orange', slug: 'value1'},
  { taxonomy: 'Orange', slug: 'value2'},
  { taxonomy: 'Green', slug: 'value3'},
]

我想将对象的 slug 转换为 javascript 中的数组并将具有相同分类的数组映射在一起:

Result:
[
  [value1, value2], // because they share the same taxonomy property.
  [value3]
];

如果您遇到过这种情况,请帮助我。非常感谢。

标签: javascript

解决方案


您可以使用reduce方法,Map然后获取数组中的值。

const myArray = [{ taxonomy: 'Orange', slug: 'value1'},{ taxonomy: 'Orange', slug: 'value2'},{ taxonomy: 'Green', slug: 'value3'},]

const res = myArray.reduce((r, {taxonomy, slug}) => {
  return r.set(taxonomy, (r.get(taxonomy) || []).concat(slug))
}, new Map).values()

console.log([...res])


推荐阅读