布尔过滤器

时间:2017-12-02 02:55:10

标签: javascript boolean boolean-expression

我正在尝试编写一个基于要查找的参数去掉元素的函数。给定布尔表达式时,我不确定为什么会失败:

function getRid(array, discardThis) {
  if (array.length === 0) {
    return []
  }
  let newArr = array.filter( function (element) {
    if (element != discardThis) {
      return element;
    }
  })
  return (newArr.length === array.length) ? [] : newArr;
}

getRid([true, true, true, false, true], true);

2 个答案:

答案 0 :(得分:2)

filter函数应该返回一个布尔值,检查它将返回的每个元素true是否应该保留,如果没有则falsefunction getRid(array, discardThis) { if (array.length === 0) { return [] } let newArr = array.filter( function (element) { return element != discardThis } ) // I'm not clear on this check so I left it, // but it would make more sense to simply return newArr return (newArr.length === array.length) ? [] : newArr } 尝试:

December 1, 2017
June 1, 2018

答案 1 :(得分:1)

您的代码中真正需要的是以下内容。

过滤器不起作用,因为它期望一个布尔值表示是否要保留该项目,而是给它一个值,在这种情况下会破坏过滤器。

  

注意:更好的名称是exclude

function getRid(array, discardThis) {
  return array.filter(function (element) {
    return element != discardThis
  })
}

console.log(
  getRid([true, true, true, false, true], true)
)
<script src="https://codepen.io/synthet1c/pen/KyQQmL.js"></script>