如何向JavaScript对象添加键/值对?
以下是我的对象文字:如何向JavaScript对象添加键/值对?,javascript,object-literal,Javascript,Object Literal,以下是我的对象文字: var obj = {key1: value1, key2: value2}; 如何将带有value3的字段key3添加到对象中?您可以使用其中任何一个(前提是key3是您要使用的实际键) 或 如果key3是一个变量,则应执行以下操作: var key3 = 'a_key'; var value3 = 3; arr[ key3 ] = value3; 在此之后,请求arr.a_键将返回value3的值,一个文本3有两种方法向对象添加新的属性: var obj = {
var obj = {key1: value1, key2: value2};
如何将带有
value3
的字段key3
添加到对象中?您可以使用其中任何一个(前提是key3是您要使用的实际键)
或
如果key3是一个变量,则应执行以下操作:
var key3 = 'a_key';
var value3 = 3;
arr[ key3 ] = value3;
在此之后,请求
arr.a_键
将返回value3
的值,一个文本3有两种方法向对象添加新的属性:
var obj = {
key1: value1,
key2: value2
};
使用点表示法:
使用方括号表示法:
当您知道属性的名称时,将使用第一种形式。当动态确定属性的名称时,使用第二种形式。如本例所示:
var getProperty = function (propertyName) {
return obj[propertyName];
};
getProperty("key1");
getProperty("key2");
getProperty("key3");
可以使用以下任一方法构造真正的JavaScript数组:
数组文字表示法:
数组构造函数表示法:
因为您的arr不是真正的数组。。。这是一个原型物体。真正的阵列是:
var arr = [{key1: value1}, {key2: value2}];
但这仍然不对。实际上应该是:
var arr = [{key: key1, value: value1}, {key: key2, value: value2}];
您的示例显示的是对象,而不是数组。在这种情况下,将字段添加到对象的首选方法是只指定给它,如下所示:
arr.key3 = value3;
您可以这样添加它:
arr['key3'] = value3;
arr.key3 = value3;
var obj = {key1: value1, key2: value2};
obj.push( "key3", "value3" );
或者这样:
arr['key3'] = value3;
arr.key3 = value3;
var obj = {key1: value1, key2: value2};
obj.push( "key3", "value3" );
建议使用变量key3
键入对象的答案仅在key3
的值为'key3'
时有效。如果对象中有多个匿名对象文本,并且希望添加另一个包含键/值对的对象,请执行以下操作:
Firebug'对象:
console.log(Comicbook);
if (typeof Comicbook[3]=='undefined') {
private_formArray[3] = new Object();
private_formArray[3]["name"] = "Peanuts";
private_formArray[3]["value"] = "12";
}
返回:
[Object{name=“Spiderman”,value=“11”},Object{name=“Marsipulami”,
value=“18”},对象{name=“Garfield”,value=“2”}]
代码:
console.log(Comicbook);
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对象我知道已经有了一个公认的答案,但我想我会把我的想法记录在某个地方。请[人们]自由地在这个想法上戳洞,因为我不确定这是否是最好的解决方案。。。但我几分钟前刚刚把这些放在一起:
Object.prototype.push = function( key, value ){
this[ key ] = value;
return this;
}
您可以这样使用它:
arr['key3'] = value3;
arr.key3 = value3;
var obj = {key1: value1, key2: value2};
obj.push( "key3", "value3" );
因为,原型函数正在返回此
您可以继续将.push
链接到obj
变量的末尾:obj.push(…).push(…).push(…)代码>
另一个特性是,可以在push函数参数中传递数组或其他对象作为值。请参阅my fiddle以了解工作示例:根据ECMA-262(,P67)中定义的属性访问器,有两种方法可以将属性添加到现有对象。所有这两种方式,Javascript引擎都会对它们一视同仁
第一种方法是使用点表示法:
obj.key3=value3;
但这样,您应该在点符号之后使用IdentifierName
var employees = [];
employees.push({id:100,name:'Yashwant',age:30});
employees.push({id:200,name:'Mahesh',age:35});
第二种方法是使用括号表示法:
obj[“key3”]=value3;
另一种形式:
var key3=“key3”;
obj[key3]=值3;
这样,您就可以使用括号表示法中的表达式(包括IdentifierName)。您可以创建一个答案为
var employees = [];
employees.push({id:100,name:'Yashwant',age:30});
employees.push({id:200,name:'Mahesh',age:35});
使用最后一个类创建新对象:
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新手,欢迎评论。适合我。我越来越喜欢写大型项目
通过obj['key']
或obj.key
添加都是可靠的纯JavaScript答案。但是,通常在使用对象和数组时,LoDash和下划线库都提供了许多额外的方便函数
,不适合
根据您要查找的内容,有两个特定的函数可以很好地利用,并提供类似于arr.push()
的功能。有关更多信息,请查看文档,其中有一些很好的示例
(仅限洛达斯)
第二个对象将覆盖或添加到基础对象。
未定义的
值不会被复制
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"}
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"}
第二个对象将覆盖或添加到基础对象。
未定义的
将被复制
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 = {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}
第二个对象包含默认值,如果它们不存在,将添加到基本对象。
如果密钥已存在,将复制未定义的值
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,它的功能类似于q.merge,如果您已经在使用jQuery,它可能是一个更好的选择
第二个对象将覆盖或添加到基础对象。
未定义的
值不会被复制
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"}
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"}
值得一提的是ES6/ES2015 Object.assign,它的功能类似于u.merge,如果您已经在使用ES6/ES2015 polyfill,那么它可能是最好的选择
第二个对象将覆盖或添加到基础对象。
未定义的
将被复制
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 = {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}
obj['key3']=value3
或obj.key3=value3
将向obj
添加新对
但是,我知道没有提到jQuery,但是如果您正在使用它,可以通过$.extend(obj,{key3:'value3'})
添加对象。例如:
var obj={key1:'value1',key2:'value2'};
$('#ini').append(JSON.stringify(obj));
$.extend(obj,{key3:'value3'});
$('#ext').append(JSON.stringify(obj))代码>
首字母:
Extended:
为了将一个键值对预先添加到一个对象中,以便中的与该元素一起工作,请首先执行以下操作:
var nwrow = {'newkey': 'value' };
for(var column in row){
nwrow[column] = row[column];
}
row = nwrow;
大多数答案中已经提到的两种最常用的方法
obj.key3 = "value3";
obj["key3"] = "value3";
定义属性的另一种方法是使用Object.defineProperty()
当您希望在定义属性时拥有更多控制时,此方法非常有用。
定义的属性可以由用户设置为可枚举、可配置和可写。我们也可以这样做
var myMap = new Map();
myMap.set(0, 'my value1');
myMap.set(1, 'my value2');
for (var [key, value] of myMap) {
console.log(key + ' = ' + value);
}
2017年答案:Object.assign()
合并对象
它覆盖dest<
let my_object = {};
// now i want to add something in it
my_object.red = "this is red color";
// { red : "this is red color"}
let my_object = { inside_object : { car : "maruti" }}
// now i want to add something inside object of my object
my_object.inside_object.plane = "JetKing";
// { inside_object : { car : "maruti" , plane : "JetKing"} }
let my_object = { inside_object : { name : "abhishek" }}
// now i want to add something inside object with new keys birth , gender
my_object.inside_object.birth = "8 Aug";
my_object.inside_object.gender = "Male";
// { inside_object :
// { name : "abhishek",
// birth : "8 Aug",
// gender : "Male"
// }
// }