Javascript未定义的对象值

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"]访问.

nnn*_*nnn 6

这不是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)