解析JSON数据给出" undefined"在第一个结果面前

时间:2014-03-20 18:21:28

标签: javascript json

我在解析邮政编码应用程序的JSON数据时遇到问题。以下代码在结果中抛出“未定义”,没有明显的原因:

“undefined16652,16654,16660,”

var myZipcodes;
$.each(data, function(i, zipData){
 if (zipData.zip){
    myZipcodes += zipData.zip;
    myZipcodes += ", ";
 }
});
$('#results').html(myZipcodes); 

这是我的对象的样子(第一个项目打开):

 [Object, Object, Object]
      0: Object
        city: "HUNTINGDON"
        country: "US"
        distance: "0"
        lat: "40.49"
        lng: "-78.01"
        locationText: "Huntingdon, PA"
        state: "PA"
        zip: "16652"
        __proto__: Object
      1: Object
      2: Object
      length: 3
      __proto__: Array[0]

我也尝试了一个FOR循环,但结果相同:

var myZipcodes;
var length = data.length;
for (var i = 0; i < length; i++) {
       myZipcodes += data[i].zip;
       myZipcodes += ", ";
    }

如果我尝试显示一个对象值的结果,则只返回没有“undefined”的zipcode。当我尝试迭代时会出现问题。

2 个答案:

答案 0 :(得分:6)

原因是myZipcodes未初始化,很可能在实际使用之前未定义。

var myZipcodes = '';  // <-- locally defined
                      // ... and initialised with ''
$.each(data, function(i, zipData) {
    if (zipData.zip) {
        myZipcodes += zipData.zip;
        myZipcodes += ", ";
    }
});

答案 1 :(得分:3)

这是因为你定义了myZipcodes,但没有初始化它。

你正在做的事情:

var myZipcodes;

这会创建myZipcodes,但不会为其赋值。它的值是undefined。因此,当您附加到此时,其值首先“转换”为字符串。所以,你得到'undefined'

您想要做的是:

var myZipcodes = '';

定义它给它一个值。