数组数组 jquery, json 到数组
array of arrays jquery, json to array
我的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 [],但是我还没解决,我已经试了一整天了,一整天!
我认为解决方案是像这里一样使用推送 related subject
但是我不是很理解这个解决方案。
非常感谢您的帮助。
在您的 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);
}
}
您可以映射行和列,如下所示:
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:
[{"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 [],但是我还没解决,我已经试了一整天了,一整天!
我认为解决方案是像这里一样使用推送 related subject 但是我不是很理解这个解决方案。
非常感谢您的帮助。
在您的 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);
}
}
您可以映射行和列,如下所示:
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));