2015-11-29 117 views
0

我有一個包含兩個嵌套數組的多維數組。一維關聯數組中的JavaScript變換多維數組

是這樣的:

$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", 
     .... 
    }, 
    .... 
    ]; 

回答

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>');

+0

謝謝您的回答,但不幸的是結果是一樣的。我得到了相同的多維數組。 – qr11

+0

沒關係我沒有複製你的答案錯了。有用!非常感謝你。 – qr11

0

像SQL或一般的關係型數據庫,唯一的機會在ode維度中有這樣的數據是你多次使用這些東西是一個: 所以它會是ID,名稱多次,並且對於每一個這你應該有一個條目從你的嵌套數組。

如果有雙層嵌套,則可能需要重複更多字段。 尋找JOIN來自sql的定義,它可能會對此有所瞭解。