javascript - 如何使用函数式编程迭代键映射并与另一个键映射进行比较

标签 javascript functional-programming

我有 2 个关键映射,我想对其进行迭代。如果键相同,那么我想使用 _.assign() 来覆盖这些值。例如:

var keyMap1 = {
  1: {
    id: 1,
    name: 'egg'
  },
  2: {
    id: 2,
    name: 'bacon'
  }
};

var keyMap2 = {
  1: {
    id: 1,
    quantity: 3
  },
  2: {
    id: 2,
    quantity: 2
  }
};

// something like this, preferably with lodash 
var result = _.compareKeys(override, keyMap1, keyMap2);

function override(obj1, obj2){
   return _.assign(obj1, obj2)
}
console.log(result);
// => { 1: { id: 1, name: 'egg', quantity: 3 }, 2: { id: 2, name: 'bacon', quantity: 2 } };

最佳答案

如果我理解您的请求,您能不能只使用 _.merge 来进行比较和分配?

var keyMap1 = {
  1: {
    id: 1,
    name: 'egg'
  },
  2: {
    id: 2,
    name: 'bacon'
  }
};

var keyMap2 = {
  1: {
    id: 1,
    quantity: 3
  },
  2: {
    id: 2,
    quantity: 2
  }
};

var result = _.merge({}, keyMap1, keyMap2);
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

关于javascript - 如何使用函数式编程迭代键映射并与另一个键映射进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41787170/

相关文章:

java - lambda 表达式如何映射到函数式接口(interface)?

functional-programming - Ecto.Repo 接收到一个没有实现访问行为的结构

Haskell/Wreq - 关于 http 请求的复杂类型签名的建议

c++ - g++ 无法推断功能映射实现的模板类型

scala - 如果scala提倡不变性,为什么它采用具有可变性的actor模型?

javascript - 使用 JavaScript 变量用 XML 数据动态填充标记

javascript - 更新页面的一部分而不重新加载整个页面

javascript - 防止退格键在 AngularJS 中导航回来

javascript - onload 和 onclick 等效吗?

javascript - Chrome 扩展 - jquery 关闭模态弹出窗口