将属性添加到javascript数组元素

时间:2014-11-27 15:58:06

标签: javascript

我必须测试一些包含以下比较的代码:

(我试图简化原始代码)

if (app.base.premiums[0].code === ‘1’)

并创建了一个测试'app'对象

app = {
    base : {
        premiums: ['first']
    }
}

然后我尝试将属性添加到数组中的第一个元素

app.base.premiums [0] .code ='1';

但是当我输入

时,这不会返回任何值
app.base.premiums[0].code

进入浏览器控制台。

我应该怎么做?

4 个答案:

答案 0 :(得分:1)

您应该以这种方式初始化“app”:

var app = {
    base : {
        premiums: [ {'code':2}]
    }
}

现在app.base.premiums [0] .code返回2

答案 1 :(得分:1)

几乎所有东西都是JS中的对象,但不是原始值,它们是:string,number,null,undefined,boolean。

它们可能看起来像对象,因为当您尝试与基元执行类似对象的交互时,它们会被包装到各自的包装类中。

(1).toString()(new Number(1)).toString()

基本相同

但是,正如您所看到的,创建了Number实例,然后在发生自动魔术包装时将其丢弃。

然而,您可以创建一个String的新实例,该实例将被保留:

premiums: [new String('first')]

答案 2 :(得分:0)

您正在做什么:'first'.code = '1';您认为这会有效吗?

不。你需要一个物体。因此,您必须将app设为此

app = {
    base : {
        premiums: [ {} ] // object literal
    }
}

答案 3 :(得分:0)

这与对象无关。问题是您正在尝试在字符串原语上设置属性。

改为使用String对象:

premiums: [new String('first')]