2015-04-01 119 views
-2

的JSON我有:陣列陣列的jQuery,JSON的數組

[{"one":"a","two":"1","three":"2","four":"3"}, 
{"one":"b","two":"4","three":"5","four":"6"}, 
{"one":"c","two":"7","three":"8","four":"9"}] 

我需要的數組:

[[[1,"a"], [4,"b"], [7,"c"]], 
[[2,"a"], [5,"b"], [8,"c"]], 
[[3,"a"], [6,"b"], [9,"c"]]] 

我該如何對待JSON到數組的數組轉換它?

我需要動態地執行因爲JSON可能更大(更多的行a,b,c,... z)。這4列是固定的(一,二,三,四),不會改變。

我嘗試了幾種方法...使用.push創建一個數組= [[]],嘗試array = new array(3),然後在每個位置創建數組[0] = new array [ ],但我還沒有解決,我整天都在嘗試這一點,整天!

我認爲解決方案是使用像這裏推related subject 但我不明白這個解決方案很好。

我很感謝您的幫助。

+0

你有嵌套的數組,所以基本上你需要嵌套循環。 – 2015-04-01 21:30:40

+0

或者你可以嘗試'map'功能。 – Xufox 2015-04-01 21:33:14

回答

0

可以映射的行和列,如下圖所示:

http://jsfiddle.net/Castrolol/0x8u352r/1/

var sampleData = [{"one":"a","two":"1","three":"2","four":"3"}, 
{"one":"b","two":"4","three":"5","four":"6"}, 
{"one":"c","two":"7","three":"8","four":"9"}]; 


function transform(data){ 

    var prepared = data.map(function(row){ 
     var keys = Object.keys(row); 
     var values = keys.map(function(key){ 
      return row[key]; 
     }); 
     var columnOne = values[0]; 
     var otherColumns = values.slice(1); 

     return { 
      letter: columnOne, 
      numbers: otherColumns 
     }; 

    });  

    var rows = []; 

    prepared.forEach(function(row){ 

     row.numbers.forEach(function(number, i){ 

      if(i >= rows.length){ 
       rows.push([]); 
      } 

      rows[i].push([+number, row.letter]); 

     }); 

    });  

    return rows; 

} 


var result = transform(sampleData) ; 
console.log(JSON.stringify(result, null, 4)); 
+0

Thanks !!! It works !!! – 2015-04-01 22:19:47

+0

Amazing !! Sincerely I've passed all day with this problem。Now it works PERFECT !! I appreciate your help。 – 2015-04-01 22:20:57

0

在你的json它的數組內的數組,所以第一個數組是單項,第二個數組是3項。所以你需要編寫內部for循環獲取第二個數組,如下所示。

for(var i=0; i<info.length; i++) 
{ 
    for(var j=0; j<info[i].length; j++) 
    { 
     Ti.API.info("Title : " + sample[i][j].one); 
     Ti.API.info("Desc : " + sample[i][j].a); 
    } 
} 
+0

謝謝你的迴應,但我沒有問題在數組內移動(我可以用$ .each(resultado,function(key,value))做到這一點我的問題是 - >如何構建新的array – 2015-04-01 21:49:43