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

这是我的对象文字:

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

我如何将{key3: value3}添加到对象?


有两种方法可以将新属性添加到对象中:

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 = [];

数组构造符号:

var arr = new Array();

编写大型项目时,我越来越喜欢LoDash / Underscore。

通过obj['key']obj.key所有纯JavaScript的答案。 然而,LoDash和Underscore库在处理对象和数组时一般都提供了许多其他方便的功能。

.push()用于数组,不用于对象。

根据你所寻找的东西,有两个特定的功能可能很好用,并赋予类似arr.push()的感觉。 有关更多信息,请查看文档,他们有一些很好的例子。

_.merge(仅限Lodash)

第二个对象将覆盖或添加到基础对象。 undefined值不会被复制。

var obj = {key1: "value1", key2: "value2"};
var obj2 = {key2:"value4", key3: "value3", key4: undefined};
_.merge(obj, obj2);
console.log(obj);
// → {key1: "value1", key2: "value4", key3: "value3"} 

_.extend / _.assign

第二个对象将覆盖或添加到基础对象。 undefined将被复制。

var obj = {key1: "value1", key2: "value2"};
var obj2 = {key2:"value4", key3: "value3", key4: undefined};
_.extend(obj, obj2);
console.log(obj);
// → {key1: "value1", key2: "value4", key3: "value3", key4: undefined}

_.defaults

第二个对象包含将被添加到基础对象(如果它们不存在)的默认值。 如果密钥已经存在, undefined值将被复制。

var obj = {key3: "value3", key5: "value5"};
var obj2 = {key1: "value1", key2:"value2", key3: "valueDefault", key4: "valueDefault", key5: undefined};
_.defaults(obj, obj2);
console.log(obj);
// → {key3: "value3", key5: "value5", key1: "value1", key2: "value2", key4: "valueDefault"}

$ .extend

另外,值得一提的是jQuery.extend,它的功能类似于_.merge,如果你已经在使用jQuery,可能会更好。

第二个对象将覆盖或添加到基础对象。 undefined值不会被复制。

var obj = {key1: "value1", key2: "value2"};
var obj2 = {key2:"value4", key3: "value3", key4: undefined};
$.extend(obj, obj2); 
console.log(obj);
// → {key1: "value1", key2: "value4", key3: "value3"}

Object.assign()

值得一提的是ES6 / ES2015的Object.assign,它的功能与_.merge相似,如果你想自己填充,你可能已经在使用像Babel这样的ES6 / ES2015 polyfill了。

第二个对象将覆盖或添加到基础对象。 undefined将被复制。

var obj = {key1: "value1", key2: "value2"};
var obj2 = {key2:"value4", key3: "value3", key4: undefined};
Object.assign(obj, obj2); 
console.log(obj);
// → {key1: "value1", key2: "value4", key3: "value3", key4: undefined}

你可以使用其中任何一种(假设key3是你想要使用的acutal key)

arr[ 'key3' ] = value3;

要么

arr.key3 = value3;

如果key3是一个变量,那么你应该这样做:

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

在此之后,请求arr.a_key将返回value3的值,即文字3

链接地址: http://www.djcxy.com/p/27229.html

上一篇: How can I add a key/value pair to a JavaScript object?

下一篇: Access / process (nested) objects, arrays or JSON