使用Javascript过滤函数输出,只要它们是真的就可以了(Javascript算法)

问题

给定数组arr,从第一个元素(0索引)开始迭代并删除每个元素,直到迭代的元素通过时函数func返回true。

一旦条件满足,就返回数组的其余部分,否则,arr应该作为一个空数组返回。

这就是我所尝试的

function dropElements(arr, func) {
  let filteredArray = arr.filter((item) => {
    return func(arr[item]) == true;
  })

  if (filteredArray == true) {
    return filteredArray;
  } else {
    return [];
  }
}

console.log(dropElements([1, 2, 3, 4], function(n) {
  return n > 5;
}));

console.log(dropElements([1, 2, 3, 4], function(n) {
  return n >= 3;
}))

解决方案:

如果你想使用 filter,设置一个标志,当遇到条件时,这个标志会被切换,如果标志被切换,则返回true。

function dropElements(arr, func) {
  let found = false;
  return arr.filter((item) => {
    if (found) return true;
    if (func(item)) {
      found = true;
      return true;
    }
  });
}

console.log(dropElements([1, 2, 3, 4], function(n) {
  return n > 5;
}));


console.log(dropElements([1, 2, 3, 4], function(n) {
  return n >= 3;
}))

给TA打赏
共{{data.count}}人
人已打赏
未分类

无法通过点击事件选择一个表内的所有TD。

2022-9-8 22:22:38

未分类

子组件的道具没有得到更新。

2022-9-8 22:22:40

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索