gpt4 book ai didi

javascript - 如何使用括号为 JS 对象创建二级属性

转载 作者:行者123 更新时间:2023-11-28 15:51:36 25 4
gpt4 key购买 nike

这是交易。我从对象文字开始。

var prepObj = {};

然后我将执行一个 foreach 操作,向该对象添加属性。基本上,最终它会看起来像这样(在更大的范围内)。

{
34 : {
prop1: myvalue,
prop2: myvalue,
}
87 : {
prop1: myvalue,
prop2: myvalue,
}
102 : {
prop1: myvalue,
prop2: myvalue,
}
}

在整个循环中,我将查找某个索引的某个属性的值(例如 87 的 prop1),并为该对象创建它。

因此,在循环之前我从一个空白对象开始。

然后在循环过程中,我想我可以这样做:

var index_id = 87;
var which_prop = "prop1";
var prop_value = "This is a value.";

prepObj[index_id][which_prop] = prop_value;

但是当我尝试这个时,我收到一条错误消息:

Uncaught TypeError: Cannot set property 'prop1' of undefined

我做错了什么?

最佳答案

JavaScript 不支持autovivication 。您必须先定义 prepObj[index_id] = {},然后再定义 prepObj[index_id][which_prop] = prop_value

这是因为 prepObj[index_id] 最初未定义。因此,您尝试在 prepObj[index_id] 上设置 prop1 属性,该属性是未定义。您可以通过设置 prepObj[index_id] 一些定义的值来避免这种情况。

如果您担心每次都会使用新对象破坏 prepObj[index_id],您可以通过以下任一方式测试该值是否已设置:

  • index_id in prepObj - 这测试 prepObj 是否已经有一个条目,其键为 index_id

  • typeof prepObj[index_id] != "undefined" - 测试 prepObj[index_id] 的值是否不undefined

  • prepObj[index_id] || {} - 如果不是假值(如 undefined),则其计算结果为 prepObj[index_id];否则它会计算出一个新对象

关于javascript - 如何使用括号为 JS 对象创建二级属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20380504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com