我有一个结构如下的JSON对象:
{
"xaxis": [
"foo",
"bar",
"baz"
],
"yaxis": [
333,
992,
1365
]
}
从中我想创建另一个这样的JSON对象:
{
"piegraph": [
["foo",333],
["bar",992],
["baz",1365]
]
}
在客户端JavaScript中进行此转换可以节省我的额外开发和另一个服务器往返,以获取基本相同的数据。
如果有帮助,我可以使用jQuery库。
答案 0 :(得分:2)
您可以使用Functional JavaScript:
second = { piegraph: Functional.zip([first.xaxis, first.yaxis]) };
答案 1 :(得分:1)
为什么你不能只使用for循环?
for(var i = 0; xaxis.length; i++){
piegraph.push({xaxis[i], yaxis[i]);
}
答案 2 :(得分:1)
假设您的第一个 JSON字符串已经解析为一个对象,您只需要迭代两个数组中的任何一个的元素,以构建结果:
var result = { piegraph: [] }; // initialize piegraph as an empty array
var l = obj.xaxis.length;
while(l--) {
result.piegraph[l] = [ obj.xaxis[l], obj.yaxis[l] ];
}
// result will look like this:
// {"piegraph":[["foo",333],["bar",992],["baz",1365]]}
不需要库,只需一个简单的顺序循环。 ;)
答案 3 :(得分:1)
这不难手动,但underscore.js函数库有一堆非常方便的函数,包括.zip()
:
var piegraph = _.zip( obj.xaxis, obj.yaxis );
答案 4 :(得分:0)
看起来你想要对两个阵列进行成对匹配(也称为“压缩”)。
答案 5 :(得分:0)
假设x轴和y轴的array1和array2以及resultArray,即“piegraph”
jQuery.map(array1, function(item, i){
resultArray.push(new Array(array[item, array2[i]));
}
});