Javascript未定义的对象值

Javascript undefined object values

本文关键字:对象 未定义 Javascript      更新时间:2023-09-26

我遇到了一个未定义的关联数组值,不知道为什么!

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为整数。

In exists o["id"]返回Undefined,对于其中的每个对象,但是直接在对象创建之后,值就存在并且可以通过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;
}

下面也是很棒的代码片段: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

For in循环不仅循环添加的成员,而且还循环存储在原型中的成员

修改:

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