2013-11-04 43 views
0

我想採取格式化像一個JavaScript對象:結合JavaScript數組

results = { 
    names: [ 
     "id", 
     "first_name" 
     ], 
    values: [ 
     [ 
      1234, 
      "Fred" 
     ], 
     [ 
      4321, 
      "Joe" 
     ], 
     [ 
      1123, 
      "Mary" 
     ] 
    ] 
} 

,變成這樣:

results = { 
     [id: 1234, name: "Fred"], 
     [id: 4321, name: "Joe"], 
     [id: 1123, name: "Mary"] 
    } 

我試圖做這樣的事情,但我不能得到正確的結構:

var data = [] 
for (i=0; i < results['values'].length; i++){ 
    var innerData = [] 
    for (b=0; b < results['names'].length; b++){ 
     innerData.push([name:results['names'][b], value: results['values'][i][b]]) 
    } 
    data.push(innerData) 
} 
console.log(data) 

回答

2

問題1:

results = { 
    [id: 1234, name: "Fred"], 
    [id: 4321, name: "Joe"], 
    [id: 1123, name: "Mary"] 
} 

var data = [] 

[name:results['names'][b]… 

陣列[]由一組值的順序。

對象{}由一組key:value對組成。

您每次使用的都是錯誤的。使用{},你必須[]反之亦然


問題2:

你說要帶idname鍵的對象,但你要創建namevalue鍵。使用您實際需要的屬性名稱。

0

試試這個:

var data = []; 
for (i in results['values']){ 
    var innerData = {} 
    var value = results['values'][i]; 
    for (b in value){ 
     var key = results['names'][b]; 
     innerData[key] = value[b]; 
    } 
    data.push(innerData); 
} 
console.log(data);