2015-04-01 100 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