3
我试图找到一种方法来使JavaScript中的对象数组非规范化以获得一组数组。我需要一个表格结构(非规范化的数据集)。非规范化对象数组到非规格化数组
因此,鉴于输入:
var data = [
{ v1: 1, v2: [ { a: 1 }, { a: 2 } ] },
{ v1: 2, v2: [ { a: 3 }, { a: 4 } ], v3: 5 },
];
我需要一个像
var data2 = [
{ v1: 1, v2_a: 1 },
{ v1: 1, v2_a: 2 },
{ v1: 2, v2_a: 3, v3: 5 },
{ v1: 2, v2_a: 4, v3: 5 }
];
递归的方式的结构。
我第一次尝试做深入的时间变量增加的属性完全扫描搜索:
var result = [];
function aArray(data) {
for(var i = 0; i < data.length; i++){
var temp = {};
for(var prop in data[i]){
var val = data[i][prop];
if(Object.prototype.toString.call(val) === '[object Array]') {
aArray(val);
}else{
temp[prop] = val;
}
}
result.push(temp);
}
}
但预期
你想为包含一个数组,它需要为嵌套数组,任何工作性质一般做这种扩张数组内?或者只是顶级的'v2'属性?它是否需要为嵌套在对象内部的对象工作,以便子对象在自己的世界中得到扩展? – jfriend00
不能按预期工作的事情是,您在所需的输出数组中有4个对象,并且仅从输入数组创建2个对象。 – Tibos
伙计。我正在尝试,但我没有更多的时间来完成它..你可能会尝试完成自己。看看[这个小提琴](http://jsfiddle.net/nPMcF/)。对不起.. =/ – DontVoteMeDown