这是我的对象文字:

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

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


当前回答

只需添加财产:

我们想将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()更加动态,因为我们可以访问作为参数传入的所有对象,并且可以在将它们分配给新对象之前对它们进行操作。

其他回答

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

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

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

//console.log(obj);

我们可以通过多种方式向JavaScript对象添加键/值对。。。

案例1:展开对象使用此选项,我们可以同时向对象添加多个key:value。

常量矩形={width:4,height:6};常量立方体={…矩形,长度:7};const cube2={…矩形,长度:7,笔划:2};console.log(“立方体2:”,立方体2);console.log(“Cube:”,立方体);console.log(“矩形:”,矩形);

案例2:使用点符号

var矩形={width:4,height:6};直角长度=7;console.log(矩形);

案例3:使用[平方]符号

var矩形={width:4,height:6};矩形[“长度”]=7;console.log(矩形);

2017年答案:Object.assign()

Object.assign(dest,src1,src2,…)合并对象。

它使用源对象的财产和值(无论多少)覆盖dest,然后返回dest。

assign()方法用于将所有可枚举自身财产的值从一个或多个源对象复制到目标对象。它将返回目标对象。

实时示例

var obj={key1:“value1”,key2:“value2”};对象.assign(obj,{key3:“value3”});document.body.innerHTML=JSON字符串(obj);

2018年答案:对象扩展运算符{…}

obj = {...obj, ...pair, scalar};

来自MDN:

它将自己的可枚举财产从提供的对象复制到新对象上。现在可以使用比Object.assign()更短的语法进行对象的浅层克隆(不包括原型)或合并。注意Object.assign()触发setter,而spread语法不触发setter。

实时示例

它适用于当前的Chrome和Firefox。他们说这在当前的Edge中不起作用。

var obj={key1:“value1”,key2:“value2”};var pair={key3:“value3”};var scalar=“value4”obj={…obj,…对,标量};document.body.innerHTML=JSON字符串(obj);

2019年答案

对象赋值运算符+=:

obj += {key3: "value3"};

哎呀。。。我被迷住了。从未来走私信息是非法的。完全模糊!

大多数浏览器都支持,它检查对象键是否可用,如果可用,它将覆盖现有的键值,如果不可用,则使用值添加键

示例1

let my_object = {};

// now i want to add something in it  

my_object.red = "this is red color";

// { red : "this is red color"}

示例2

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"} }

示例3

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" 
//            }   
//       }
var arrOfObj = [{name: 'eve'},{name:'john'},{name:'jane'}];
    var injectObj = {isActive:true, timestamp:new Date()};

    // function to inject key values in all object of json array

    function injectKeyValueInArray (array, keyValues){
        return new Promise((resolve, reject) => {
            if (!array.length)
                return resolve(array);

            array.forEach((object) => {
                for (let key in keyValues) {
                    object[key] = keyValues[key]
                }
            });
            resolve(array);
        })
    };

//call function to inject json key value in all array object
    injectKeyValueInArray(arrOfObj,injectObj).then((newArrOfObj)=>{
        console.log(newArrOfObj);
    });

输出如下:-

[ { name: 'eve',
    isActive: true,
    timestamp: 2017-12-16T16:03:53.083Z },
  { name: 'john',
    isActive: true,
    timestamp: 2017-12-16T16:03:53.083Z },
  { name: 'jane',
    isActive: true,
    timestamp: 2017-12-16T16:03:53.083Z } ]