这是我的对象文字:

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

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


当前回答

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

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();

其他回答

根据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;

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

实现这一目标的最佳方式如下:

function getKey(key) {
  return `${key}`;
}

var obj = {key1: "value1", key2: "value2", [getKey('key3')]: "value3"};

//console.log(obj);

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

arr[ 'key3' ] = value3;

or

arr.key3 = value3;

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

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

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

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

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

只需添加财产:

我们想将prop2:2添加到这个对象中,这是最方便的选项:

点运算符:object.prop2=2;方括号:对象['prop2']=2;

那么我们用哪一个呢?

dot运算符的语法更加简洁,应该用作默认值(imo)。但是,点运算符不能向对象添加动态关键点,这在某些情况下非常有用。下面是一个示例:

常量对象={方案1:1}const key=Math.random()>0.5?'key1':'key2';obj[key]=“此值具有动态键”;console.log(obj);

合并对象:

当我们想要合并两个对象的财产时,以下是最方便的选项:

Object.assign(),将目标对象作为参数,以及一个或多个源对象,并将它们合并在一起。例如:

常量对象1={a: 1中,b: 2,};const object2=对象分配({c: 3中,d: 4个},对象1);console.log(对象2);

对象排列运算符。。。

常量对象={prop1:1,第2部分:2}常量newObj={…对象,prop3:3,第4部分:4}console.log(newObj);

我们用哪一个?

扩展语法不那么冗长,应该用作默认的imo。不要忘记将此语法转换为所有浏览器都支持的语法,因为它相对较新。Object.assign()更加动态,因为我们可以访问作为参数传入的所有对象,并且可以在将它们分配给新对象之前对它们进行操作。