如果其中一个值匹配,则将对象的值合并到一个新数组中

pex*_*hdu 2 javascript

我有一个对象数组,如下所示:

const myArray = [
  { taxonomy: 'Orange', slug: 'value1'},
  { taxonomy: 'Orange', slug: 'value2'},
  { taxonomy: 'Green', slug: 'value3'},
]
Run Code Online (Sandbox Code Playgroud)

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

Result:
[
  [value1, value2], // because they share the same taxonomy property.
  [value3]
];
Run Code Online (Sandbox Code Playgroud)

如果您有这方面的经验,请帮助我.非常感谢你.

Nen*_*car 5

您可以使用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])
Run Code Online (Sandbox Code Playgroud)