如何将多层嵌套对象数组转换为一维数组?
解决方案:将嵌套对象数组转换为动态一维数组
没问题,我来帮你搞定这个数组转换的需求!你需要把每个对象里的id和value对象中的所有属性值,按顺序放到一个子数组里,而且value的属性是动态的——不管它有多少个键,都能自动提取出来。
实现代码
// 你的原始数组 const originalArray = [ { "id": "59cf758f7bdf8d2e0c1c68c7", "value": { "city": "Mahbubnagar", "state": "Andhra Pradesh", "country": "India" } }, { "id": "59cf758f7bdf8d2e0c1c68c8", "value": { "city": "Udgir", "state": "Maharashtra", "country": "India" } }, { "id": "59cf758f7bdf8d2e0c1c68c9", "value": { "city": "Umarga", "state": "Maharashtra", "country": "India" } }, { "id": "59cf758f7bdf8d2e0c1c68ca", "value": { "city": "Umarkhed", "state": "Maharashtra", "country": "India" } }, { "id": "59cf758f7bdf8d2e0c1c68cb", "value": { "city": "Umred", "state": "Maharashtra", "country": "India" } } ]; // 转换逻辑 const finalArray = originalArray.map(item => { // 先放入id,再展开value对象的所有属性值 return [item.id, ...Object.values(item.value)]; }); console.log(finalArray);
代码说明
map方法遍历原始数组的每个元素,对每个对象进行转换;Object.values(item.value)会把value对象里的所有属性值提取成一个数组,比如["Mahbubnagar", "Andhra Pradesh", "India"];- 用扩展运算符
...把这个值数组展开,和item.id一起组成新的子数组,这样不管value里新增多少个属性(比如以后加个zipCode),代码都能自动适配,不用手动修改。
转换后的结果
运行代码后,你会得到和预期一致的结构:
[ ["59cf758f7bdf8d2e0c1c68c7", "Mahbubnagar", "Andhra Pradesh", "India"], ["59cf758f7bdf8d2e0c1c68c8", "Udgir", "Maharashtra", "India"], ["59cf758f7bdf8d2e0c1c68c9", "Umarga", "Maharashtra", "India"], ["59cf758f7bdf8d2e0c1c68ca", "Umarkhed", "Maharashtra", "India"], ["59cf758f7bdf8d2e0c1c68cb", "Umred", "Maharashtra", "India"] ]
之前你写的代码只提取了id,现在这个方案补上了动态提取value属性值的逻辑,完美匹配你的需求~
内容的提问来源于stack exchange,提问作者طلحة
相关产品推荐
相关产品推荐

