How do I merge two dictionaries in Javascript?

var a = {};
a['fruit'] = "apple";


var b = {};
b['vegetable'] = "carrot";


var food = {};

The output variable 'food' must include both key-value pairs.

94045 次浏览

你可以用 Object.assign

var a = { fruit: "apple" },
b = { vegetable: "carrot" },
food = Object.assign({}, a, b);


console.log(food);

对于不支持 Object.assign的浏览器,可以迭代属性并手动分配值。

var a = { fruit: "apple" },
b = { vegetable: "carrot" },
food = [a, b].reduce(function (r, o) {
Object.keys(o).forEach(function (k) { r[k] = o[k]; });
return r;
}, {});


console.log(food);

您可以在 es6中使用传播操作符,但是您需要使用 babel 来传送代码以便跨浏览器友好。

const a = {};
a['fruit'] = "apple";


const b = {};
b['vegetable'] = "carrot";


const food = { ...a, ...b }


console.log(food)

创建一个可以扩展对象的 实用功能,比如:

function extendObj(obj1, obj2){
for (var key in obj2){
if(obj2.hasOwnProperty(key)){
obj1[key] = obj2[key];
}
}


return obj1;
}

然后将这个 food对象与另一个对象一起扩展:

food = extendObj(food, a);
food = extendObj(food, b);

实现方法:

1. 使用 JavaScript Object.sign ()方法。

var a = {};
a['fruit'] = "apple";


var b = {};
b['vegetable'] = "carrot";


var food = Object.assign({}, a, b);


console.log(food);

2. 使用自定义函数。

var a = {};
a['fruit'] = "apple";


var b = {};
b['vegetable'] = "carrot";


function createObj(obj1, obj2){
var food = {};
for (var i in obj1) {
food[i] = obj1[i];
}
for (var j in obj2) {
food[j] = obj2[j];
}
return food;
};


var res = createObj(a, b);


console.log(res);

3. 使用 ES6接线员

let a = {};
a['fruit'] = "apple";


let b = {};
b['vegetable'] = "carrot";


let food = {...a,...b}


console.log(food)