2014-09-23 91 views
0

我有一個 JSON 數組,它是以下結構:打印陣列在Javascript

[ 
    [ 
     ["ABC", [ 
      [0, 0.139], 0.14]], 
     ["DEF", [ 
      [0, 0.02, 0.06, 0.015], 0.115]], 
     ["GHI", [ 
      [0, 0.0722, 0.9], 0.105]] 
    ] 
] 

我卡在部分打印格式

ABC 
    First:0, 0.139 Final: 0.14 

DEF 
    First:0,0.02,0.06,0.015 Final: 0.115 

這應該不是太難,但我只是不能夠破解它,這就是我已經試過:

$.each(data, function(i){ 
    var vc = data[0][i]; 
    var cw = data[0][i].[i][1] 
    var arr = [vc, cw]; 
    vcat.push(arr); 
}); 

for(i=0; i<len;i++){ 
    vc.push(data[0][i]); 
    for(j=0;j<len;j++){ 
     cw.push(data[0][i].data[j]) 
     } 
    } 
} 

這兩種方法都失敗了,我無法確定打印此樹的正確算法。

+3

你能告訴我們你真正想要的輸出看起來像?我的輸入數據中沒有看到「Something,Something Else」。 – JLRishe 2014-09-23 13:51:34

+0

我很抱歉..我編輯了問題 – Newtt 2014-09-23 13:54:28

+2

謝謝。假設那些是數組而不是普通對象,是否安全?你可以用方括號來顯示實際的JSON(如果需要的話,你可以在jspretty.com上對它進行美化。) – JLRishe 2014-09-23 13:59:00

回答

1

它看起來這是你想要做什麼:

var o = {}; 

$.each(data[0][0], function() { 
    o[this[0]] = { 
     First: this[1][0].join(", "), 
     Final: this[1][1] 
    }; 
}); 

http://jsfiddle.net/qf25azhp/

0

這一次,你遍歷data,所以你需要使用data[i] - 你總是訪問只有data[0](以及其他一些屬性)。

其次,JavaScript中的字符串連接運算符是+(加號),而不是.

所以,你的代碼而應是這樣的:

data = data[0]; 
$.each(data, function(i){ 
    var vc = data[i][0]; 
    var cw = data[i][1][0][0]+" "+data[i][1][1]; 
    var arr = [vc, cw]; 
    vcat.push(arr); 
}); 

data = data[0]; 
for(var i=0; i<len;i++){ 
    vc.push(data[i][0]); 
} 
for(var j=0;j<len;j++){ 
    cw.push(data[j][1][0][0]+" "+.data[j][1][1]) 
} 

(忽略可能許多其他問題)