我在解析邮政编码应用程序的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。当我尝试迭代时会出现问题。
答案 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 = '';
定义它和给它一个值。