javascript - ES6 按唯一属性过滤对象
问题描述
我有一系列错误,每个错误都有一个非唯一的param
属性。
我想根据param
之前是否见过来过滤数组。
像这样的东西:
const filteredErrors = [];
let params = [];
for(let x = 0; x < errors.length; x++) {
if(!params.includes(errors[x].param)) {
params.push(errors[x].param);
filteredErrors.push(errors[x]);
}
}
但我不知道如何在 ES6 中做到这一点。
我可以获得唯一的参数const filteredParams = Array.from(new Set(errors.map(error => error.param)));
,但不能获得对象本身。
很确定这只是我对高阶函数理解的一个弱点,但我就是无法理解
解决方案
您可以破坏param
、检查params
并将值添加到 params 并返回true
以获取对象作为过滤结果。
结果,您将获得一组首次发现的相同类型的错误。
const
params = [],
filteredErrors = errors.filter(({ param }) =>
!params.includes(param) && params.push(param));
推荐阅读
- python - 如何设置networkx线路长度?
- android - Android Paging3 改变页面大小
- javascript - 如何使用函数在html中打开链接
- excel - 当 4 个单元格不为空时启用命令按钮
- python - 在 python 数据框中为重复项添加增量
- javascript - TypeError: _this.props.onUpdateShelf 不是函数 | 反应 | 基于类的组件
- javascript - 如何在 React 的另一个组件中通过数组的 id 调用
- python - 如何让 discord.py 意图发挥作用?
- json - 有没有办法解决这个问题我无法从下面的模型类中获得正确的 JSON 响应,提供了模型类和响应
- java - 在java中,如何从不同的单个线程中的其他类访问一个类的值?