javascript - 将数组数组减少为对象的平面数组
问题描述
我一直在转换数据结构:
let d = [
{ no: 1, score: 7000 },
{ no: 2, score: 10000 },
[
{ no: 1, score: 8500 },
{ no: 2, score: 6500 }
]
];
d = d.reduce((accum, o) => {
}, [])
我怎样才能生产这个?
[{name: 'no 1', score: [7000, 8500]}, {name: 'no 2', score: [10000, 6500]}]
解决方案
这是一种简单的方法reduce
,
const result = d.flat().reduce((acc: {name: string, score: number[]}[], curr) => {
const { no, score } = curr;
let item = acc.find(a => a.name === `no ${no}`);
if (!item) {
item = { name: `no ${no}`, score: []};
acc.push(item);
}
item.score.push(score);
return acc;
}, []);
console.log(result)
推荐阅读
- azure - 使用 Azure 混合连接进行集成测试
- android - Android Studio 总是报告一个 add const 警告我该如何关闭它?
- amazon-web-services - 如何使用 AWS CLI 清空 S3 存储桶
- java - Java:以 XML 或 JSON 格式请求正文而不使用字符串
- python - Django Python 在模型删除函数中创建对象返回 500 错误
- cypress - cy.type 中途停止输入,在 .wait 之后完成
- mariadb - 大数据库中的慢查询
- mongodb - 如何有条件地删除字段 mongoodb
- wkwebview - WKWebView 在 Safari 中打开链接
- amazon-web-services - 使用 cloudformation 将 ec2 密钥对添加到 EMR 集群