在JavaScript中将数据构建为多维数组



我试图从现有的JSON文件重建数据结构。为了方便示例,我删除了所有不必要的代码:

var entries = [
  {
    "band": "Weezer",
    "song": "El Scorcho"
  },
  {
    "band": "Chevelle",
    "song": "Family System"
  }
]
var rows = {};
for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    var t = "a";
    for (var key in entry) {
            rows[t] = t;
            t = t+"1";
    }    
    $("#agenda").append(JSON.stringify(rows));
}
$("#agenda").append("<br /><br /> In the end, it only shows the last one:<br />");
$("#agenda").append(JSON.stringify(rows));

还有一个更好的例子:http://jsfiddle.net/84w6F本例的目的是通过将键和值都作为变量调用,尝试重建"entries"中的数据,使其完全相同。由于某种原因,我最终弄得一团糟,最后当我尝试在循环后读取数组时,它只显示最后一个子数组。

您这里有一个包含2个条目的一维数组,而不是多维数组。

你的外部循环,迭代数组中的两个对象fine,而内部循环遍历每个对象中的所有键值对,但它只设置rows["a"]rows["a1"],因为数组中的每个对象只有2个属性。

我不太确定你想对数组中的数据做什么,如果你想完全复制它们,那么你可以这样做:

var rows = [];
for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    var newObj = {};
    for (var key in entry) {
      newObj[key] = entry;
    }
    rows.push(newObj);
}

一切正常。因为有2个条目,所以在循环中添加了两次行:

for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    var t = "a";
    for (var key in entry) {
            rows[t] = t;
            t = t+"1";
    }    
    $("#agenda").append(JSON.stringify(rows));
}

您实际上正在做的是,您正在重复替换rows['a']rows['a1'](而不是增长它),并追加它两次,以便您看到第一个结果。

相关内容

  • 没有找到相关文章