将属性添加到 javascript 数组元素

Add a property to javascript array element

本文关键字:javascript 数组元素 添加 属性      更新时间:2023-09-26

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

(我试图简化原始代码)

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

并创建了一个测试"应用程序"对象

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

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

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

但是当我输入时,这不会返回任何值

app.base.premiums[0].code

进入浏览器控制台。

我应该怎么做?

你应该这样初始化"app":

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

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

几乎所有东西都是JS中的对象,但不是原始值:字符串,数字,null,undefined,布尔值。

它们

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

(1).toString()(new Number(1)).toString()基本相同

但是,如您所见,Number实例是创建的,然后在发生自动魔术包装时被丢弃。

但是,您可以做的是创建一个将保留的新String实例:

premiums: [new String('first')]

你在做什么: 'first'.code = '1'; 你认为这会起作用吗?

不。你需要一个对象。所以你必须对此做出app

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

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

请改用字符串对象:

premiums: [new String('first')]