如何创建要添加到JavaScript对象变量的动态键

瑞安:

我正在尝试类似的方法,但是此示例不起作用。

jsObj = {};

for (var i = 1; i <= 10; i++) {
    jsObj{'key' + i} = 'example ' + 1;
}

如何制作这样的动态密钥?

尖的:

方括号:

jsObj['key' + i] = 'example' + 1;

在JavaScript中,所有数组都是对象,但并非所有对象都是数组。主要区别(而且很难用直接的JavaScript和普通对象来模仿)数组实例维护该length属性,以便它反映一个加属性名称的数字值,该属性的名称为数字,并将其值转换为数字,是所有此类属性中最大的。这听起来很奇怪,但它只是意味着给定一个数组实例,有相似的名字属性"0""5""207",等等,都在他们的存在决定的价值被特殊处理length而且,最重要的是,length可以设置的值删除此类属性。length数组的设置0 有效地删除名称看起来像整数的所有属性。

好的,这就是使数组特别的原因。但是,所有这些都与JavaScript [ ]运算符的工作方式完全无关该运算符是对任何对象都起作用的对象属性访问机制。在这方面要特别注意的是,就简单属性访问而言,数字数组属性名称并不特殊。它们只是碰巧看起来像数字的字符串,但是JavaScript对象属性名称可以是您喜欢的任何类型的字符串。

因此,[ ]操作员在for遍历数组循环中的工作方式

for (var i = 0; i < myArray.length; ++i) {
  var value = myArray[i]; // property access
  // ...
}

确实与[ ]访问名称为某些计算字符串的属性时的工作方式没有什么不同

var value = jsObj["key" + i];

两种情况下,[ ]那里操作员都在做完全相同的事情。换句话说,在一种情况下,所涉及的对象恰好是数组的事实并不重要。

使用设置属性值时[ ],故事是相同的,只是围绕该length属性的特殊行为如果在数组实例上使用数字键设置属性:

myArray[200] = 5;

然后(假设“ 200”是最大的数字属性名称),该length属性将被更新201为该属性分配的副作用。但是,如果对普通对象执行相同的操作:

myObj[200] = 5;

没有这种副作用。数组和对象的称为“ 200”的属性将以5完全相同的方式设置为该值

可能有人认为,因为这种length行为很方便,所以您最好使Array构造函数的所有对象实例代替普通对象。这没有什么直接的错误(尽管这可能会造成混淆,尤其是对于熟悉某些其他语言的人,length某些属性包含在中,而其他属性则没有)。但是,如果您正在使用JSON序列化(这是很常见的事情),请了解将数组实例以涉及数字命名属性的方式序列化为JSON 添加到数组的其他属性将永远不会以序列化的JSON形式出现。因此,例如:

var obj = [];
obj[0] = "hello world";
obj["something"] = 5000;

var objJSON = JSON.stringify(obj);

“ objJSON”的值将是一个包含just的字符串["hello world"]“东西”财产将丢失。

ES2015:

如果您能够使用ES6 JavaScript功能,则可以使用计算属性名称非常轻松地处理此问题:

var key = 'DYNAMIC_KEY',
    obj = {
        [key]: 'ES6!'
    };

console.log(obj);
// > { 'DYNAMIC_KEY': 'ES6!' }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将键/值对添加到JavaScript对象?

JavaScript-如何动态添加到嵌套对象数组

如何将变量添加到javascript / jQuery对象?

如何将带有数组键的对象动态添加到对象文字?

将嵌套的键值对添加到键是动态的Javascript对象中

将嵌套键值对添加到动态键的Javascript对象中

使用JQ将对象添加到动态键

如何根据javascript中的某个键将多个对象值添加到单个对象中

如何从数字创建数组并将一些键添加到对象中

动态创建对象并将其添加到列表JavaFX

将观察者添加到动态创建的对象

javascript如何在创建对象后将新对象添加到对象中

如何将动态创建的对象添加到容器中

Javascript:将键添加到值的多个对象

javaScript-将键和值添加到对象

在javascript中将键添加到对象数组

如何将许多值添加到javascript对象中的一个键

动态将键值添加到Javascript中的嵌套对象

如何动态获取匹配的输入字段以将值添加到JavaScript中的对象?

Javascript动态地将新的数组对象添加到现有的数组中(带键)?

需要遍历数组以获取特定键:要添加到空对象的值对

如何将对象动态添加到休眠查询

如何将片段添加到动态创建的FrameLayout

如何将图像添加到动态创建的 JTable

如何将CSS添加到动态创建的表

将 javascript 对象值添加到全局变量

如何使用“新”将对象变量添加到数组?

如何在Javascript中将对象添加到对象?

如何在JavaScript中将对象添加到对象