javascript - lodash方法合并2个不同大小的对象

标签 javascript lodash

是否有任何方法可以合并两个这样的对象数组

var a = [{id: 1, val: 1},{id: 2, val: 2},{id: 3, val: 3},{id: 4, val: 4},{id: 5, val: 5}];
var b = [{id: 21, val: 21},{id: 22, val: 22},{id: 23, val: 23}]

//final result should be
c = [
  {id:1, val: 1},
  {id:21, val: 21},
  {id:2, val: 2},
  {id:22, val: 22},
  {id:3, val: 3},
  {id:23, val: 23},
  {id:4, val: 4},
  {id:5, val: 5}
]

当然我可以自己创建它,但只是想检查lodash是否提供

最佳答案

你可以先zip数组,flatten结果然后使用 compact删除缺失的数组元素(zip 将它们添加为未定义):

var c = _.compact(_.flatten(_.zip(a,b)))

或者使用链接:

var c = _(a)
    .zip(b)
    .flatten()
    .compact()
    .value()

var a = [{id: 1, val: 1},{id: 2, val: 2},{id: 3, val: 3},{id: 4, val: 4},{id: 5, val: 5}];
var b = [{id: 21, val: 21},{id: 22, val: 22},{id: 23, val: 23}]

var c = _(a)
    .zip(b)
    .flatten()
    .compact()
    .value()
    
document.getElementById('results').textContent = JSON.stringify(c);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

<pre id="results"></pre>

关于javascript - lodash方法合并2个不同大小的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42860140/

相关文章:

javascript - onclick 和 jQuery 事件绑定(bind)导致痛苦

javascript - 数据到另一页

javascript - 修复了 Safari 和 IE 的无效日期,但未修复负 UTC

javascript - 检查object.property的值是value1还是value2

javascript - 使用 lodash 比较并从数组中删除对象

javascript - 构建运行时挂起 'react-native run-ios'

javascript - 使用 javascript 进行中奖计数

javascript - 从列表中返回对象的更简洁的方法

javascript - 使用 Lodash 和 Moment 从单个日期按天/小时分组数组

javascript - 如何在具有冲突库的网站上正确包含 lodash/下划线?