如何将一个键/值对添加到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
。