【问题标题】:How do I merge two dictionaries in Javascript? [duplicate]如何在 Javascript 中合并两个字典? [复制]
【发布时间】: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


【解决方案1】:

你可以使用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);

【讨论】:

    【解决方案2】:

    实现方式:

    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)

    【讨论】:

    【解决方案3】:

    您可以在 es6 中使用扩展运算符,但您需要使用 babel 来转换代码以使其对跨浏览器友好。

    const a = {};
    a['fruit'] = "apple";
    
    const b = {};
    b['vegetable'] = "carrot";
    
    const food = { ...a, ...b }
    
    console.log(food)

    【讨论】:

    • 仅在 es6 中可用。在 es5 上会显示 lint 错误。
    【解决方案4】:

    创建一个实用函数,它可以扩展对象,比如:

    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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-22
      • 2018-09-10
      • 2013-04-17
      • 2012-09-12
      • 1970-01-01
      • 2022-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多