这是我的对象文字:

var obj = {key1: value1, key2: value2};

如何将值为3的字段key3添加到对象中?


当前回答

obj['key3']=value3或obj.key3=value3将向obj添加新对。

然而,我知道没有提到jQuery,但是如果您正在使用它,可以通过$.exextend(obj,{key3:‘value3‘})添加对象。例如。:

var obj={key1:“value1”,key2:“value2”};$(“#ini”).append(JSON.stringify(obj));$.exextend(obj,{key3:“value3”});$('#ext').append(JSON.stringify(obj));<script src=“https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js“></script><p id=“ini”>首字母:</p><p id=“ext”>扩展:</p>

extend(target[,object1][,objectN])将两个或多个对象的内容合并到第一个对象中。

它还允许使用$.exextend(true,object1,object2);进行递归添加/修改:

变量对象1={苹果:0,香蕉:{重量:52,价格:100},樱桃:97};变量对象2={香蕉:{价格:200},榴莲:100};$(“#ini”).append(JSON.stringify(object1));$.exextend(true,object1,object2);$(“#ext”).append(JSON.stringify(object1));<script src=“https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js“></script><p id=“ini”>首字母:</p><p id=“ext”>扩展:</p>

其他回答

您可以通过以下方式添加:

arr['key3'] = value3;

或者这样:

arr.key3 = value3;

只有当key3的值为“key3”时,建议使用变量key3键入对象的答案才有效。

您可以使用其中一个(前提是key3是您想要使用的实际键)

arr[ 'key3' ] = value3;

or

arr.key3 = value3;

如果key3是变量,则应执行以下操作:

var key3 = 'a_key';
var value3 = 3;
arr[ key3 ] = value3;

之后,请求arr.a_key将返回值3,即文本3。

根据ECMA-262中定义的属性访问器(http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf,P67),有两种方法可以将财产添加到现有对象。通过这两种方式,Javascript引擎将对它们一视同仁。

第一种方法是使用点符号:

obj.key3 = value3;

但是这样,您应该在点符号后使用IdentifierName。

第二种方法是使用括号表示法:

obj["key3"] = value3;

以及另一种形式:

var key3 = "key3";
obj[key3] = value3;

这样,您可以在括号符号中使用表达式(包括标识符名称)。

大多数答案中已经提到了两种最常用的方法

obj.key3 = "value3";

obj["key3"] = "value3";

定义属性的另一种方法是使用Object.defineProperty()

Object.defineProperty(obj, 'key3', {
  value: "value3",       // undefined by default
  enumerable: true,      // false by default
  configurable: true,    // false by default
  writable: true         // false by default
});

当您希望在定义属性时拥有更多控制权时,此方法非常有用。用户可以将定义的属性设置为可枚举、可配置和可写。

我们也可以这样做。

var myMap = new Map();
myMap.set(0, 'my value1');
myMap.set(1, 'my value2');
 for (var [key, value] of myMap) {
  console.log(key + ' = ' + value);
 }