json - JavaScript : Array overriding the same values after assinging to JSON object

标签 json jquery multidimensional-array

我正在使用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/

相关文章:

swift - 需要一种算法来洗牌 5 个数组的元素,每个数组具有相同的 5 个元素,这样没有两个数组在相同的索引处具有相同的元素

javascript - 如何在 Javascript 中使用 toISOString()?

javascript - 如何避免 JavaScript 日期格式错误

javascript - 水平下拉菜单鼠标悬停问题

javascript - 将 JQUERY 函数转换为原生 JavaScript

C++使用构造函数中的值初始化类中的二维基本数组

javascript - 是否可以在没有服务器的情况下构建 HTML5 应用程序?

json - openjdk-1.8.0 中无法使用 JSONObject 和 JSONException

javascript - 在使用 Jquery 或 JS 加载(或被看到)之前修改 HTML 元素

arrays - 如何解决 Java heap space Exception for ArrayList Size?