我正在使用jquery ajax& ajax响应是多维json数组,我将JSON值分配给coordinates
数组&在将所有值分配给coordinates
之后,将coord_set
数组分配给新的JSON coord_set
,它将所有值都包含在所有值中,
例如 JSON结果包含以下值
obj[0]={125, 343, 456, 453},
obj[1]={345, 657, 234, 787},
obj[2]={980, 677, 657, 568}
在分配新JSON后,值为:
coord_set[0] = {
fillColor : 'rgba(255, 234, 111 ,0.5)',
data : [980, 677, 657, 568]
}
coord_set[1] = {
fillColor : 'rgba(255, 234, 111 ,0.5)',
data : [980, 677, 657, 568]
}
coord_set[2] = {
fillColor : 'rgba(255, 234, 111 ,0.5)',
data : [980, 677, 657, 568]
}
这是我的代码:
var obj = JSON.parse(data);
for(var j=0;j<obj.length;j++)
{
for (var i=0;i<obj[j].length;i++)
{
coordinates[i] = obj[j][i].how_many;
}
coord_set[j] = { fillColor : 'rgba(255, 234, 111 ,0.5)', data : coordinates };
}
alert(JSON.stringify(coord_set));
请告诉我,如果我在代码中做错了什么?
答案 0 :(得分:2)
问题是您使用的是单个coordinates
数组。您继续在同一个数组中设置和重新设置值,并继续将相同的数组存储在coord_set
的新元素中。要解决此问题,您只需在每次通过外部循环时使用新的coordinates
数组:
for(var j=0;j<obj.length;j++)
{
coordinates = []; // <----- add this
for (var i=0;i<obj[j].length;i++)
答案 1 :(得分:0)
我会假设JSON.parse确实有效......但既然你说你使用的是jquery,我会亲自使用http://api.jquery.com/jQuery.parseJSON/ ......
您的代码很少:
你永远不会为坐标创建一个新对象,默认情况下,它是JS中的全局变量。您必须输入:
var coordinates = []; // before the for (var i = 0; ...
这个属性“how_many”来自哪里?我在你的第一个代码块中没有看到它...你的i循环中的代码应该是:
coordinates[i] = obj[j][i];
最后,为什么还需要这个瞬态对象的副本?应该这样做:
coord_set[j] = { fillColor : 'rgba(255, 234, 111 ,0.5)', data : obj[j] };
// if you change your result set to give a code like that:
obj[0]= [ 125, 343, 456, 453 ] // and not: obj[0]={125, 343, 456, 453}