首页 > 解决方案 > 有没有办法在 JS 中过滤具有特定数量返回项目的数组?

问题描述

例如,我只想得到两个满足过滤条件的项目。

filter() 然后 slice(2) 将迭代所有项目,这真的很浪费,而 find() 只能返回一个项目。

有没有办法指定满足过滤条件的返回项目的数量?除了自己写for循环。

标签: javascriptjqueryreactjsfilterecma

解决方案


我会编写一个辅助函数,它接收你的数组、一个计数和一个谓词函数,类似于 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)


推荐阅读