Javascript 布尔滤波器

Javascript 布尔滤波器,javascript,boolean,boolean-expression,Javascript,Boolean,Boolean Expression,我试图编写一个函数,根据要查找的参数除去元素。我不确定在给定布尔表达式时为什么会失败: function getRid(array, discardThis) { if (array.length === 0) { return [] } let newArr = array.filter( function (element) { if (element != discardThis) { return element; } }) ret

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

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);

filter
函数应该返回一个布尔值,检查它将返回的每个元素
true
(如果应该保留),以及
false
(如果不保留)。尝试:

function 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
}

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

筛选器不起作用,因为它需要一个布尔值来确定是否保留该项,而您给它的值在本例中破坏了筛选器

注意:更好的名称是
exclude

函数getRid(数组,丢弃此){
返回数组.filter(函数(元素){
返回元素!=放弃此
})
}
console.log(
getRid([true,true,true,false,true],true)
)