结构大概是
{ '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}全部提取出来做成新的数组,怎么快速实现?
1 qianlige 2023-12-26 11:46:11 +08:00 Object.keys() |
2 jianchang512 2023-12-26 11:47:06 +08:00 via Android 这种问题难道不是 chatGPT 最擅长的吗 |
3 Rache1 2023-12-26 11:48:20 +08:00 ![]() const v = Object.values(data) .map(v => Object.values(v).map(v => Object.values(v))) .flat(3); console.log(v); |
![]() | 4 asche910 2023-12-26 11:49:21 +08:00 ![]() // 合并后的数组 let result = []; // 遍历原始数据 for (const key in data) { const innerLists = Object.values(data[key].list); // 使用 concat 将多个数组合并为一个 result = result.concat(...innerLists); } console.log(result); |
![]() | 5 Mistyrainjn 2023-12-26 11:50:34 +08:00 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); |