javascript - ES5 Javascript 通过数组中的对象映射,然后按组更改对象键
问题描述
我有一个对象数组,我尝试在对象键中再添加一个单词,但是遇到问题,请检查我的数据并期望输出和我在下面尝试的代码:
试图得到这样的输出:
const data = [
{
'name_A': Joe,
'year_A': 2019,
'saving_A': 0,
'member_A': false,
'group:_A': "A"
},
{
'name_B': Amy,
'year_B': 2019,
'saving_B': 0,
'member_B': false,
'group_B': "B"
},
{
'name_C': Bob,
'year_C': 2019,
'saving_C': 0,
'member_C': true,
'group_C': "C"
}
];
这是我的代码:
const data = [{
name: 'Joe',
year: 2019,
saving: 0,
member: false,
group: "A"
},
{
name: 'Amy',
year: 2019,
saving: 0,
member: false,
group: "B"
},
{
name: 'Bob',
year: 2019,
saving: 0,
member: true,
group: "C"
}
];
const filter = data.reduce((acc, key) => {
const groupName = key.group;
const obj = {};
if (key.member === false) {
const nodeId = key.nodeId + groupName;
obj.nodeId = key.nodeId;
obj.year = key.year;
acc.push(obj);
}
return acc;
}, []);
console.log(filter)
谢谢您的帮助!
解决方案
您可以使用 reduce 来做到这一点:
const data = [
{
name: 'Joe',
year: 2019,
saving: 0,
member: false,
group: "A"
},
{
name: 'Joe',
year: 2019,
saving: 0,
member: false,
group: "B"
},
{
name: 'Joe',
year: 2019,
saving: 0,
member: true,
group: "C"
}
];
let result = data.map(el => {
const group = el.group
return Object.keys(el).reduce((a, i) => {
a[`${i}_${group}`] = el[i]
return a
}, {})
})
console.log(result)
推荐阅读
- c# - 如何在 C# 程序中调试由 Excel 互操作引起的 COM 异常?
- javascript - 单击不同的下拉菜单时关闭下拉菜单
- linux - ubuntu linux中的德古拉主题
- c++ - 强制转换为 void 以避免使用重载的用户定义逗号运算符
- python - Python - 字符串文字 str.replace 中的错误
- github - GCP:由于缺少“最新”标签,Cloud Run 预览版构建失败
- php - 尽管代码没有错误,但 php 中的 save_uploaded_file 不起作用
- azure - Azure B2C:无法从 v2.0 .well-known openid-configuration 检索文档
- git - 提交的文件被覆盖到 git
- validation - Confluence Data Center Plugin Validator - 区分大小写的表名问题