2014-09-11 89 views
0

以下是我的代码到目前为止:我正尝试使用GAJSON对象的属性创建一个名为dataJSON的新JSON对象。但是,当我尝试迭代GAJSOn对象时,我只获取了要添加到数组中的最后一个元素。我只将最后一个元素添加到JS数组中

var GAstring ='{"data":[{"bounceRate": "4","country":"Denmark"},{"bounceRate": 
"3","country":"Spain"},{"bounceRate":"6","country":"Romania"}, 
{"bounceRate":"1","country":"Bulgaria"},{"bounceRate":"0","country":"Lithuania"}, 
{"bounceRate":"2","country":"Norway"}]}'; 
var GAJSON=JSON.parse(GAstring); 
var viewJSON = { 
    data:[] 
}; 
var dataJSON ={}; 
for(var i =0; i<GAJSON.data.length; i++) { 
    dataJSON["bounceRate"] = GAJSON.data[i].bounceRate; 
    dataJSON["country"] = GAJSON.data[i].country; 
} 
viewJSON.data.push(dataJSON); 
+0

肯定。您一直反复写入'dataJSON'对象的相同属性。你期待什么结果? – 2014-09-11 10:31:52

+0

如果你想要一个对象数组,然后在循环中创建一个新的对象*,并在循环中创建'.push()'它*。 – 2014-09-11 10:33:29

回答

1

您在dataJSON["bounceRate"] = GAJSON.data[i].bounceRate;

每次重写值试试这个代码:

var GAstring ='{"data":[{"bounceRate": "4","country":"Denmark"},{"bounceRate":"3","country":"Spain"},{"bounceRate":"6","country":"Romania"},  {"bounceRate":"1","country":"Bulgaria"},{"bounceRate":"0","country":"Lithuania"},  {"bounceRate":"2","country":"Norway"}]}'; 
var GAJSON=JSON.parse(GAstring); 
var viewJSON = { 
    data:[] 
}; 
var dataJSON ={}; 
for(var i =0; i<GAJSON.data.length; i++) { 
    dataJSON[i] = []; 
    dataJSON[i]["bounceRate"] = GAJSON.data[i].bounceRate; 
    dataJSON[i]["country"] = GAJSON.data[i].country; 
} 
viewJSON.data.push(dataJSON); 
console.log(viewJSON); 

DEMO

+0

为什么低估? Downvoter可以给我理由。 – Manwal 2014-09-11 10:37:35

+0

为什么要在数组中的对象内创建数组?你的代码没有意义 - 这就是为什么你被低估了。 – Andy 2014-09-11 10:41:54

+0

@andy你是对的。但是我指出了OP的错误。你的解决方案最适合我。为此+1。 – Manwal 2014-09-11 10:43:07

2

你的新对象的push应该是在循环中。

for(var i =0; i<GAJSON.data.length; i++) { 
    viewJSON.data.push({ 
    bounceRate: GAJSON.data[i].bounceRate, 
    country: GAJSON.data[i].country 
    }); 
} 

DEMO

相关问题