这是我的对象文字:
var obj = {key1: value1, key2: value2};
如何将值为3的字段key3添加到对象中?
这是我的对象文字:
var obj = {key1: value1, key2: value2};
如何将值为3的字段key3添加到对象中?
当前回答
你可以用@IonuțG.Stan的答案创建一个类
function obj(){
obj=new Object();
this.add=function(key,value){
obj[""+key+""]=value;
}
this.obj=obj
}
使用最后一个类创建新对象:
my_obj=new obj();
my_obj.add('key1', 'value1');
my_obj.add('key2', 'value2');
my_obj.add('key3','value3');
打印对象
console.log(my_obj.obj) // Return {key1: "value1", key2: "value2", key3: "value3"}
打印密钥
console.log(my_obj.obj["key3"]) //Return value3
我是javascript新手,欢迎评论。对我有用。
其他回答
示例显示的是对象,而不是数组。在这种情况下,将字段添加到Object的首选方法是只分配给它,如下所示:
arr.key3 = value3;
在编写大型项目时,我越来越喜欢LoDash/Undercore。
通过obj['key']或obj.key添加都是纯JavaScript的可靠答案。然而,在使用对象和数组时,LoDash和Undercore库都提供了许多其他方便的功能。
.push()用于数组,而不是对象。
根据您正在查找的内容,有两个特定的函数可能很好利用,并提供类似arr.push()的功能。有关更多信息,请查看文档,其中有一些很棒的示例。
_.mmerge(仅限Lodash)
第二个对象将覆盖或添加到基础对象。不复制未定义的值。
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"}
_扩展/分配
第二个对象将覆盖或添加到基础对象。将复制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}
_.默认值
第二个对象包含默认值,如果它们不存在,将添加到基础对象。如果键已经存在,将复制未定义的值。
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"}
$.扩展
此外,jQuery.extend可能值得一提,它的功能类似于_.mmerge,如果您已经在使用jQuery,它可能是一个更好的选项。
第二个对象将覆盖或添加到基础对象。不复制未定义的值。
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"}
对象.assign()
可能值得一提的是ES6/ES2015 Object.assign,它的功能类似于_.mmerge,如果您已经在使用像Babel这样的ES6/ES2015polyfill,如果您想自己填充,它可能是最好的选择。
第二个对象将覆盖或添加到基础对象。将复制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}
你可以用@IonuțG.Stan的答案创建一个类
function obj(){
obj=new Object();
this.add=function(key,value){
obj[""+key+""]=value;
}
this.obj=obj
}
使用最后一个类创建新对象:
my_obj=new obj();
my_obj.add('key1', 'value1');
my_obj.add('key2', 'value2');
my_obj.add('key3','value3');
打印对象
console.log(my_obj.obj) // Return {key1: "value1", key2: "value2", key3: "value3"}
打印密钥
console.log(my_obj.obj["key3"]) //Return value3
我是javascript新手,欢迎评论。对我有用。
您可以使用其中一个(前提是key3是您想要使用的实际键)
arr[ 'key3' ] = value3;
or
arr.key3 = value3;
如果key3是变量,则应执行以下操作:
var key3 = 'a_key';
var value3 = 3;
arr[ key3 ] = value3;
之后,请求arr.a_key将返回值3,即文本3。
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>