如何向对象数组添加新元素?

时间:2018-05-09 16:19:27

标签: javascript arrays object

我想在我的对象数组中添加一个新元素。任意整数list[x]的每个数组元素x都是以下形式的对象:

{
    name: "insert-name",
    value: "insert-value"
}

我被告知要将数组添加到数组中,我必须使用push()函数。这就是我所做的:

exports.handle = function(input) {
for(var i=0; i<cc.list.length; i++) {
    if(input == cc.list[i].name) {
        return cc.list[i].value;
    }
}

if(input.startsWith("create-cc")) {
    var namevalue = input.slice(10, input.length);
    var spaceloc = namevalue.indexOf(" ");
    var nname = namevalue.slice(0, spaceloc);
    var nvalue = namevalue.slice(spaceloc+1, namevalue.length);

    cc.list.push({
        name: nname,
        value: nvalue
    });

    return "Command successfully created! Typing `Z!" + name +"` will output `" + value +"` now!" ;
}

return "Error.";

};

cc.list是此模块.js文件中数组的名称。我使用来自用户的输入作为我要添加到列表中的新数组元素的名称和值。但是我在控制台上出错了,它告诉我:

ReferenceError: name is not defined

这完全有道理,因为我没有声明这样的参数。但是,该参数是否已作为构成数组元素的“模板”对象的一部分存在?为什么这种方法不起作用?如何将新的数组对象元素附加到此数组?

1 个答案:

答案 0 :(得分:2)

问题在于这一行:

return "Command successfully created! Typing `Z!" + name +"` will output `" + value +"` now!" ;

它正在使用名为name的变量,但是不存在这样的变量,因此错误ReferenceError: name is not defined

您与value犯了同样的错误,没有使用该名称定义变量。

但是,您确实有名为nnamenvalue的变量,所以这可能是您打算写的:

return "Command successfully created! Typing `Z!" + nname +"` will output `" + nvalue +"` now!" ;