另一个javascript复制问题

时间:2011-07-20 08:57:09

标签: javascript

原来的json

var json = 
  [{ "LABEL":"foo1", "DATA":340020, "BAR":235 },
   { "LABEL":"foo2", "DATA":140084, "BAR":330 },
   { "LABEL":"fooN", "DATA":126489, "BAR":120 }];


在所需格式下方,新DATA对应旧BAR

  [{ "LABEL":"foo1", "DATA":235 },
   { "LABEL":"foo2", "DATA":330 },
   { "LABEL":"fooN", "DATA":120 }];

3 个答案:

答案 0 :(得分:3)

没有什么特别的花哨。我使用嵌套循环:

var index, jBar, obj;

jBar = [];
for (index = 0; index < json.length; ++index) {
    obj = json[index];
    jBar[index] = {LABEL: obj.LABEL, DATA: obj.BAR};
}

以上要点:

  • 使用[]创建一个新的空白数组以分配给jBar
  • 使用旧式索引循环(jsonthat's not what it's for)循环遍历for..in数组。
  • 使用对象文字({...})创建要放入jBar的条目。
  • 通过分配到下一个可用的广告位将其添加到jBar。您可以使用jBar.push({...});代替,但令人惊讶的是,它在几个平台上速度较慢,而且非常清楚,所以......

答案 1 :(得分:0)

var i;
    var json = 
  [{ "LABEL":"foo1", "DATA":340020, "BAR":235 },
   { "LABEL":"foo2", "DATA":140084, "BAR":330 },
   { "LABEL":"fooN", "DATA":126489, "BAR":120 }];

   var jBar =
  [{ "LABEL":"foo1", "DATA":235 },
   { "LABEL":"foo2", "DATA":330 },
   { "LABEL":"fooN", "DATA":120 }];

   for(var i=0;i<json.length;i++)
    jBar[i].DATA=json[i].DATA;

现在jbar与json具有相同的DATA

答案 2 :(得分:0)

您正在将Array属性设置为未定义的值。 JSON.stringify忽略数组的其他属性