javascript - 如果其中一个值匹配,则将对象的值合并到一个新数组中
问题描述
我有一组看起来像这样的对象:
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]
];
如果您遇到过这种情况,请帮助我。非常感谢。
解决方案
您可以使用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])
推荐阅读
- php - 如何在 PHP 中创建一个数组以显示正确的格式?
- python - 使用 pytorch 在输入梯度上训练神经网络
- bash - 你如何结合2个awk输出
- python - 如何在 ColumnTransformer 的管道中实现逆变换?
- mongoose - 将 Typegoose 与 GraphQL 一起使用
- python - 如何在 Python 中编辑编码的 json 文件
- r - 如果 col 名称包含 'dat' 则发生变化
- javascript - WebGL 从屏幕外画布正确读取像素
- java - 按语言分类的 Unicode 代码
- java - 链表删除和insertAfter方法