Mar*_*kus 0 javascript undefined
我在关联数组值上遇到了未定义,并且无法弄清楚原因!
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;
}
Run Code Online (Sandbox Code Playgroud)
id是字符串,n是整数.
在exists o ["id"]为其中的每个对象返回Undefined,但在创建对象后直接显示值并通过obj ["id"]访问.
这不是JS for循环的工作方式.您的o变量成为索引,而不是值.它应该是:
if (list[o]["id"] == id) {
Run Code Online (Sandbox Code Playgroud)
除了真的你不应该for..in在数组上使用,所以它应该是:
function exists(id) {
for (var i = 0; i < list.length; i++) {
if (list[i]["id"] == id) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
795 次 |
| 最近记录: |