访问数组值显示未定义

时间:2014-07-03 21:33:33

标签: javascript

我有一个数组

var data = [{"fname":"john","sname":"doe","id":"2"},{"country":"England"}];

我试着用这个迭代:

var comment='';

for(var i = 0; i < data.length; i++) {
    comment = data[i];

}

我用这个访问数据:

alert(comment.fname);
alert(comment.sname);
alert(comment.id);
alert(comment.country);

只有comment.country正确显示,其余显示undefined

3 个答案:

答案 0 :(得分:1)

var data ='[{"fname":"john","sname":"doe","id":"2"},{"country":"England"}]';

此数组包含2个不同的对象。如果同一个对象有fname,sname,id和country,你应该把它们变成一个。

var data ='[{"fname":"john","sname":"doe","id":"2","country":"England"}]';

答案 1 :(得分:1)

每次循环时你的循环都会覆盖comment,所以最后它只包含data的最后一个元素。如果您希望comment包含其他元素的属性,则需要在循环期间选择它们。

comment = {}
$.each(data, function(i, obj) {
    $.extend(comment, obj); // Merge the properties if each element into comment
});

答案 2 :(得分:0)

刚刚得到它;

我没有更改服务器端的代码。

var comment=[];
$.each(data, function(key, val) {
    $.each(val, function(index, value){
            comment[index]=value;
    });
}); 

显示的所有值

alert(comment.fname);
alert(comment.sname);
alert(comment.id);
alert(comment.country);