首页 > 解决方案 > 如果条件必须只满足一次,如何停止数组方法?

问题描述

我已经给出了一个简单的任务来遍历一个数组arr并从第一个元素(0 索引)开始删除每个元素,直到当迭代元素通过它时函数func返回。true

然后“一旦”满足条件,则返回数组的其余部分,否则,arr应作为空数组返回。所以dropElements([0, 1, 0, 1]应该返回[1, 0, 1]

为了回答我的问题,我使用数组过滤方法,但下面的代码将返回[1, 1]. 是否可以在此问题中停止数组方法?一旦条件返回 true,我应该在代码中添加什么来停止它?

function dropElements(arr, func) {
  return arr.filter(func);
}

dropElements([0, 1, 0, 1], function(n) {return n === 1;});

标签: javascriptarraysmethodsbreak

解决方案


相反,我会使用findIndex来查找与条件匹配的索引,然后.slice只取它之后的内容:

function dropElements(arr, func) {
  const index = arr.findIndex(func);
  return index === -1 ? [] : arr.slice(index);
}

console.log(dropElements([0, 1, 0, 1], n => n === 1));


推荐阅读