【发布时间】:2017-09-12 23:18:47
【问题描述】:
var a = {};
a['fruit'] = "apple";
var b = {};
b['vegetable'] = "carrot";
var food = {};
输出变量“food”必须包含两个键值对。
【问题讨论】:
-
试试
var food = Object.assign({}, a, b)
标签: javascript
var a = {};
a['fruit'] = "apple";
var b = {};
b['vegetable'] = "carrot";
var food = {};
输出变量“food”必须包含两个键值对。
【问题讨论】:
var food = Object.assign({}, a, b)
标签: javascript
你可以使用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);
【讨论】:
实现方式:
1.使用JavaScriptObject.assign()方法。
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 Spread operator.
let a = {};
a['fruit'] = "apple";
let b = {};
b['vegetable'] = "carrot";
let food = {...a,...b}
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);
【讨论】: