数组数组jquery,json到数组

array of arrays jquery, json to array

本文关键字:数组 json jquery      更新时间:2023-09-26

我拥有的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=[[]],尝试array=new array(3),然后在每个位置制作array[0]=new array[],但我还没有解决,我已经试了一整天了,一整天了!

我认为解决方案是使用类似推送的相关主题但我不太理解这个解决方案。

我将感谢你的帮助。

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

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

在json中,它的数组位于数组内部,因此第一个数组为单个项,第二个数组为3项。因此,您需要编写内部for循环来获得第二个数组2项,如下所示。

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