我遇到关联数组值未定义,但无法弄清楚原因!
var list = new Array();
function addNewElement(id, n) {
var obj = new Object();
obj["id"] = id;
obj["n"] = n;
list.push(obj);
}
function exists(id) {
for (var o in list) {
if (o["id"] == id) {
return true;
}
}
return false;
}
id 是字符串,n 是整数。
对于其中的每个对象,存在 o["id"] 返回未定义,但在对象创建后,值立即存在并可通过 obj["id"] 访问。
最佳答案
这不是 JS for 循环的工作原理。您的 o
变量将成为索引,而不是值。应该是:
if (list[o]["id"] == id) {
除非你真的不应该在数组上使用for..in
,所以它应该是:
function exists(id) {
for (var i = 0; i < list.length; i++) {
if (list[i]["id"] == id) {
return true;
}
}
return false;
}
关于Javascript undefined object 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16773927/