javascript - 有没有办法在 JS 中过滤具有特定数量返回项目的数组?
问题描述
例如,我只想得到两个满足过滤条件的项目。
filter() 然后 slice(2) 将迭代所有项目,这真的很浪费,而 find() 只能返回一个项目。
有没有办法指定满足过滤条件的返回项目的数量?除了自己写for循环。
解决方案
我会编写一个辅助函数,它接收你的数组、一个计数和一个谓词函数,类似于 array.filter 的工作方式。如果应包含该项目,则返回 true。
function filterCount(array, count, predicate) {
const elements = [];
for (const el in array) {
if (predicate(el)) {
elements.push(el);
}
if (elements.length >= count) {
break;
}
}
return elements;
}
const test = [1,2,3,4,5,6,7,8,9,10];
const onlyTwo = filterCount(test, 2, (number) => number >= 5);
console.log(onlyTwo)
推荐阅读
- reactjs - 如何在 React 中的 onblur 事件后检查组件是否已被单击
- java - Maven 无法使用 eclipse 解决 Jacob 依赖关系
- java - 点燃持久化集合:找不到具有紧凑页脚的对象的元数据
- json - 如何在 React.js 中从 json 给出相对本地路径?
- google-chrome - Chrome 扩展程序截取的屏幕截图 - 隐私风险?
- javascript - 使用其他数据javascript将分号分隔的值拆分为多行
- html - 如何将容器放置在具有自身溢出的固定位置?
- sql - 在 SSIS csv 导出中去除日期/时间分隔符
- javascript - 如何将缓动函数应用于此跳波动画
- windows - Docker 透明网络和端口映射