这是我的对象文字:

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

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


当前回答

为了给对象添加键值对,以便for In与该元素一起使用,请首先执行以下操作:

    var nwrow = {'newkey': 'value' };
    for(var column in row){
        nwrow[column] = row[column];
    }
    row = nwrow;

其他回答

有两种方法可以向对象添加新的财产:

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

使用点符号:

obj.key3 = "value3";

使用方括号表示法:

obj["key3"] = "value3";

当您知道属性的名称时,将使用第一种形式。当动态确定属性的名称时,使用第二种形式。如本例所示:

var getProperty = function (propertyName) {
    return obj[propertyName];
};

getProperty("key1");
getProperty("key2");
getProperty("key3");

一个真正的JavaScript数组可以使用以下任一方法构建:

数组文字表示法:

var arr = [];

Array构造函数表示法:

var arr = new Array();

可以使用{[key]:value}语法创建新对象:

常量foo={a: '键',b: '值'}常量bar={[foo.a]:foo.b}console.log(bar);//{key:“value”}console.log(bar.key);//价值常量baz={['key2']:'value2'}console.log(baz);//{key2:“value2”}console.log(baz.key2);//值2

使用前面的语法,您现在可以使用扩展语法{…foo,…bar}添加新对象,而不改变旧值:

常量foo={a:1,b:2};常量条={…foo,…{['c']:3}};console.log(bar);//{a:1,b:2,c:3}console.log(bar.c);//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;

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

如果在一个Object中有多个匿名Object文本,并希望添加另一个包含键/值对的Object,请执行以下操作:

Firebug对象:

console.log(Comicbook);

返回:

[对象{name=“Spiderman”,值=“11”},对象{name=“Marsiplami”,value=“18”},对象{name=“Garfield”,value=“2”}]

代码:

if (typeof Comicbook[3]=='undefined') {
    private_formArray[3] = new Object();
    private_formArray[3]["name"] = "Peanuts";
    private_formArray[3]["value"] = "12";
}

将对象{name=“Peanuts”,value=“12”}添加到Comicbook对象

下一个Javascript规范(候选阶段3)中简短而优雅的方式是:

obj={…obj,…{key3:value3}}

在Object spread vs Object.assign和Axel Rauschmayers博士的网站上可以找到更深入的讨论。

自8.6.0版以来,它已经在node.js中运行。

最新版本的Vivaldi、Chrome、Opera和Firefox也知道这个功能,但Mirosoft直到今天才知道,无论是在Internet Explorer还是Edge中。