javascript - 使用lodash过滤数据

标签 javascript lodash

目标是查找“allInvoices”数组中在“selectedIds”数组中具有对应发票Id的所有对象。

我目前正在使用 lodash 并实现如下。我想知道是否有一种更优雅的方法使用 lodash、链接或其他方法来执行此任务。

var selectedIds = [
  { invoiceId: 2, customerId: 34 },
  { invoiceId: 4, customerId: 49}
  ];

var allInvoices = [
  {
    id: 2,
    name: 'Ron',
    date: '2015-14-12'
  },
  {
    id: 3,
    name: 'Harry'
  },
  {
    id:4,
    name: 'snowpiercer'
  },
  {
    id:5,
    name: 'birdman'
  },
  {
    id:6,
    name: 'superman'
  }
  ];

  var  result = [];

  _.forEach(selectedIds, function(myId) {

    var eachInvoice = _.find(allInvoices,{id: myId.invoiceId});
    result.push(eachInvoice);

  });

  console.log(result);

http://plnkr.co/edit/btB3aEwPDotao9kMtgFm?p=info

最佳答案

这是另一种方法:

_(allInvoices)
    .groupBy('id')
    .at(_.pluck(selectedIds, 'invoiceId'))
    .flatten()
    .value()
  • groupBy()创建一个以 ids 为键的对象
  • at()创建一个数组,在特定键处选取值
  • flatten()删除数组嵌套

关于javascript - 使用lodash过滤数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30601513/

相关文章:

javascript - 如何优化 pocketsphinx.js 中的阈值

javascript - 使用 javascript 停止页面重定向而不发出警告或询问

javascript - 如果下一行字符具有相同的字符集,则合并一组字符?

javascript - Google 云端硬盘中的搜索脚本

javascript - 谷歌地图 :turning the GPolyline cursor to pointer

javascript - 我不明白 "$scope._=_;"(Angular/lodash)

javascript - 如何使用 lodash 从复杂的对象数组中获取值?

javascript - 仅当值不存在时才使用 lodash 推送到数组?

javascript - JS 将一个数组元素推到末尾

javascript - 如何用lodash改进这个例程?