如何在Loadash中过滤对象数组

拉尔夫·H

大家好,我有这个对象:

var selectedItems = [
    { item:{ id:1, description:"Battery" }, quantity: 100 },
    { item:{ id:2, description:"Ballpen" }, quantity: 1000 },
    { item:{ id:3, description:"Can" }, quantity: 50 }
];
var optionSelection=[
    { id:1, description:"Battery" },
    { id:2, description:"Ballpen" },
    { id:3, description:"Can" },
    { id:4, description:"Bottle" },
    { id:5, description:"Glass" },
];

我想让optionSelection不在selectedItems中。

保利先生

您可以使用_.differenceWith查找id字段之间的差异

const selection = [
  { item: { id: 1, description: "Battery" }, quantity: 100  },
  { item: { id: 2, description: "Ballpen" }, quantity: 1000 },
  { item: { id: 3, description: "Can"     }, quantity: 50   }
];
const options = [
  { id: 1, description: "Battery" },
  { id: 2, description: "Ballpen" },
  { id: 3, description: "Can"     },
  { id: 4, description: "Bottle"  },
  { id: 5, description: "Glass"   },
];

// See: https://lodash.com/docs/4.17.15#differenceWith
const diff = _.differenceWith(
  options,
  _.map(selection, ({ item: id }) => id),
  (a, b) => a.id === b.id
);

console.log(diff);
.as-console-wrapper { top: 0; max-height: 100% !important; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.min.js"></script>


这是一个ES5 / 6版本,没有任何依赖性。

const defaultPluckFn = ({ item: { id } }) => id;

const filterOptionsBySelection = (
  options,
  selection,
  pluckFn = defaultPluckFn
) => (ids =>
  options.filter(({ id }) => !ids.has(id)))
(new Set(selection.map(sel => pluckFn(sel))));

const selection = [
  { item: { id: 1, description: "Battery" }, quantity: 100  },
  { item: { id: 2, description: "Ballpen" }, quantity: 1000 },
  { item: { id: 3, description: "Can"     }, quantity: 50   }
];
const options = [
  { id: 1, description: "Battery" },
  { id: 2, description: "Ballpen" },
  { id: 3, description: "Can"     },
  { id: 4, description: "Bottle"  },
  { id: 5, description: "Glass"   },
];

const filtered = filterOptionsBySelection(options, selection);

console.log(filtered);
.as-console-wrapper { top: 0; max-height: 100% !important; }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Lodash中过滤对象数组

来自分类Dev

如何在JavaScript中的对象数组中过滤数组?

来自分类Dev

如何在JavaScript中通过过滤对象数组来过滤对象数组

来自分类Dev

如何在Kendo Grid(AngularJs)中过滤对象数组?

来自分类Dev

如何在JavaScript中过滤数组内的嵌套对象

来自分类Dev

使用UISearchController时如何在updateSearchResultsForSearchController中过滤对象数组?

来自分类Dev

如何过滤数组中的对象?

来自分类Dev

如何在对象Javascript数组内过滤数组对象?

来自分类Dev

如何在 iOS Swift 中的嵌套数组(对多关系)中根据条件过滤对象数组

来自分类Dev

如何从对象数组中过滤null?

来自分类Dev

如何过滤js中的对象数组?

来自分类Dev

如何过滤数组中对象的属性

来自分类Dev

如何过滤对象数组中的对象数组?javascript

来自分类Dev

如何在findOne中过滤猫鼬中的嵌套数组而无需嵌套对象

来自分类Dev

如何在Angular ng-repeat中按类别键过滤数组中的对象

来自分类Dev

如何过滤对象数组?

来自分类Dev

如何在AngularJS中过滤对象集合

来自分类Dev

如何在C ++中过滤对象

来自分类Dev

如何在Prisma中过滤相关对象?

来自分类Dev

如何在Elasticsearch中过滤内部对象?

来自分类Dev

从数组中过滤对象

来自分类Dev

如何在python中过滤json数组

来自分类Dev

如何在Powershell中过滤数组

来自分类Dev

如何在React中过滤数组onClick

来自分类Dev

如何在mongodb中过滤数组元素

来自分类Dev

如何在jQuery JavaScript中过滤数组

来自分类Dev

如何在 Postgres 中过滤 JSON 数组

来自分类Dev

如何在 MS Access 中过滤数组

来自分类Dev

如何在 C++ 中过滤数组?

Related 相关文章

热门标签

归档