【发布时间】:2020-09-21 07:49:31
【问题描述】:
我是 Javascript 新手,我有想要展平的嵌套对象和数组。
我有……
[{ a: 2, b: [{ c: 3, d: [{e: 4, f: 5}, {e: 5,f: 6}]},
{ c: 4, d: [{e: 7, f: 8}]}
]
}]
并且想要...
[{a:2,c:3,e:4,f:5}, {a:2,c:3,e:5,f:6}, {a:2,c:4,e:7,f:8}]
我尝试为我的数组中的对象调整以下函数,但我只得到数组中的最终对象 [{a:2,c:4,e:7,f:8}] @987654321 @。我认为我的问题是知道如何遍历数组和对象?
原始脚本:
function flatten(obj) {
var flattenedObj = {};
Object.keys(obj).forEach(function(key){
if (typeof obj[key] === 'object') {
$.extend(flattenedObj, flatten(obj[key]));
} else {
flattenedObj[key] = obj[key];
}
});
return flattenedObj;
}
我的脚本(两者的结果相同):
flat_array=[];
function superflat(array){
for (var i = 0; i < array.length; i++) {
var obj = array[i]
var flattenedObj = {};
Object.keys(obj).forEach(function(key){
if (typeof obj[key] === 'object') {
$.extend(flattenedObj, flatten(obj[key]));
} else {
flattenedObj[key] = obj[key];
}
});
flat_array.push(flattenedObj);
}
};
mega_flat_array=[];
function megaflatten(obj) {
Object.keys(obj).forEach(function(key){
var flattenedObj = {};
if (typeof obj[key] === 'object') {
$.extend(flattenedObj, flatten(obj[key]));
} else {
flattenedObj[key] = obj[key];
}
mega_flat_array.push(flattenedObj);
});
}
感谢您的帮助
【问题讨论】:
-
一个对象中不能有两个相同的属性名。
-
@Rebeca Fiadeiro 您期望的输出应该是一个数组;加上你输入的 JSON 是错误的
-
请通过
console.log查看您的数据。你不能有两个同名的属性。 -
再次感谢您的反馈。您是正确的,它不是 JSON 而是数组。抱歉,我再次编辑了问题
标签: javascript arrays object nested