无法在Javascript对象中动态添加密钥

时间:2015-09-04 16:47:07

标签: javascript typescript

我正在尝试动态地向obj添加一个键,但我一直收到错误“无法设置未定义的属性” 但在了解这些属性之前,我无法对这些属性进行decalre。我希望它们作为该对象的键动态添加。

var dict = {}
 objectarray.forEach((item: Obj) => {
        this.dict[item.ID] = "xyz";
    });

根据How do I add a property to a Javascript Object using a variable as the name?,似乎可以通过使用obj [name] = value动态地向对象添加属性。

我错过了什么吗?有什么帮助吗?

2 个答案:

答案 0 :(得分:4)

删除this中的this.dict,你应该是金色的!

var dict = {}
objectarray.forEach((item: Obj) => {
   dict[item.ID] = "xyz";
});

如果没有看到更多的代码,很难说this在这种情况下意味着什么,但很可能它是窗口对象,所以你所说的基本上是window.dict[item.ID] = "xyz"。由于窗口上没有dict属性,它会像那样爆炸。

答案 1 :(得分:0)

@ Oskar的回答是正确的。

这是一个更详细的代码示例;

new RegExp(/^((0[1-9]|[12][0-9]|3[01])(\/)(0[13578]|1[02]))|((0[1-9]|[12][0-9])(\/)(02))|((0[1-9]|[12][0-9]|3[0])(\/)(0[469]|11))(\/)\d{4}$/)

TypeScript Playground Example