JS 如何把不同 key 的多维数组的值合并为一个新数组?

查看 69|回复 6
作者:kaiki   
结构大概是
{
        'item1':{
                'list':{
                        'a':{
                                {
                                        'name':'xxx',
                                        'num':1.
                                },
                                {
                                        'name':'xxx',
                                        'num':1.
                                }
                        }
                        'b':{
                                {
                                        'name':'xxx',
                                        'num':1.
                                }
                        }
                }
        }
        'item2':{
                'list':{
                        'w':{
                                {
                                        'name':'xxx',
                                        'num':1.
                                }
                        }
                        's':{
                                {
                                        'name':'xxx',
                                        'num':1.
                                },
                                {
                                        'name':'xxx',
                                        'num':1.
                                }
                        }
                }
        }
        'item3':{
                'list':{
                        'a':{
                                {
                                        'name':'xxx',
                                        'num':1.
                                }
                        }
                        'e':{
                                {
                                        'name':'xxx',
                                        'num':1.
                                }
                        }
                }
        }
}
数量都不固定,想要把里面的{name,num}全部提取出来做成新的数组,怎么快速实现?
qianlige   
Object.keys()
jianchang512   
这种问题难道不是 chatGPT 最擅长的吗
Rache1   
const v = Object.values(data)
.map(v => Object.values(v).map(v => Object.values(v)))
.flat(3);
console.log(v);
asche910   
// 合并后的数组
let result = [];
// 遍历原始数据
for (const key in data) {
const innerLists = Object.values(data[key].list);
// 使用 concat 将多个数组合并为一个
result = result.concat(...innerLists);
}
console.log(result);
Mistyrainjn   
const data = {
'item1': {
'list': {
'a': [
{ 'name': 'xxx', 'num': 1 },
{ 'name': 'xxx', 'num': 1 }
],
'b': [
{ 'name': 'xxx', 'num': 1 }
]
}
},
'item2': {
'list': {
'w': [
{ 'name': 'xxx', 'num': 1 }
],
's': [
{ 'name': 'xxx', 'num': 1 },
{ 'name': 'xxx', 'num': 1 }
]
}
},
'item3': {
'list': {
'a': [
{ 'name': 'xxx', 'num': 1 }
],
'e': [
{ 'name': 'xxx', 'num': 1 }
]
}
}
};
// 合并所有{name, num}到一个新数组
const mergedArray = Object.values(data).reduce((result, item) => {
Object.values(item.list).forEach(subList => {
subList.forEach(obj => {
result.push({ name: obj.name, num: obj.num });
});
});
return result;
}, []);
console.log(mergedArray);
kaiki
OP
  
@asche910 确实是这个,我之前用 concat(...arr)报错看样子是没有前面这一步
您需要登录后才可以回帖 登录 | 立即注册

返回顶部