我正在使用jquery ajax并且ajax响应是多维json数组,我将JSON值分配给坐标
数组,然后将坐标
数组分配给新的JSONcoord_set
,将所有值分配给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));
请告诉我,我的代码是否做错了什么?
最佳答案
问题是您使用的是单个坐标
数组。您不断地设置和重新设置同一数组中的值,并不断将同一数组存储在 coord_set
的新元素中。要解决此问题,您只需在每次通过外循环时使用新的坐标
数组即可:
for(var j=0;j<obj.length;j++)
{
coordinates = []; // <----- add this
for (var i=0;i<obj[j].length;i++)
关于json - JavaScript : Array overriding the same values after assinging to JSON object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18306886/