我有一个包含两个嵌套数组的数组多维。
看起来像这样:
$scope.multidimensionalArray = [{
id:1,
name:"John",
....
nestedArray1:[{
importantKey1:"important_data1",
....
nestedArray2:[{
importantKey2:"important_data2",
....
}
]},
....
]}];
如何在一维中转换这个多维数组,必须看起来像这样:
$scope.oneDimensional = [
{
id:1,
name:"John",
importantKey1:"important_data1",
importantKey2: "important_data2",
....
},
....
];
答案 0 :(得分:3)
此解决方案包含Object.keys()
和Array.prototype.forEach()
。
function getProperties(o, obj) {
Object.keys(o).forEach(function (k) {
if (Array.isArray(o[k])) {
getItems(o[k], obj);
} else {
obj[k] = o[k];
}
});
}
function getItems(array, obj) {
array.forEach(function (o) {
getProperties(o, obj);
});
}
var multidimensionalArray = [{ id: 1, name: "John", nestedArray1: [{ importantKey1: "important_data1", nestedArray2: [{ importantKey2: "important_data2", }] }] }, { id: 2, name: "Johanna", nestedArray1: [{ importantKey1: "important_data11", nestedArray2: [{ importantKey2: "important_data12", }] }] }],
result = multidimensionalArray.map(function (o) {
var obj = {};
getProperties(o, obj);
return obj;
});
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
答案 1 :(得分:0)
与sql或通常是关系数据库一样,在ode维度中拥有此数据的唯一机会是您多次使用以下这些内容: 所以它会多次 id,name ,对于每一个你应该有一个来自嵌套数组的条目。
如果存在双级嵌套,则可能需要重复更多字段。 从sql中寻找 JOIN 定义,它可能会对此有所了解。