Javascript未定义的对象值

时间:2013-05-27 13:06:49

标签: 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;
}

id是字符串,n是整数。

在exists o [“id”]为其中的每个对象返回Undefined,但在创建对象后直接显示值并通过obj [“id”]访问。

3 个答案:

答案 0 :(得分:6)

这不是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;
}

答案 1 :(得分:-1)

  

下面还有很棒的代码段:Demo Here

 var list = {};
    setValue("etshte", 393);
    var result = containsKey("etshte");
    alert(result);

    function setValue(key, value) {
        list[key] = value;
    }

    function containsKey(key) {
        if (list[key] == undefined)
            return false;
        else
            return true;
    }

Demo Here

答案 2 :(得分:-2)

对于in循环,不仅循环添加成员,还循环存储在原型

要解决此问题:

if (o.hasOwnProperty("id") && o["id"] == id) { /* */ }