从数组中删除所有假值

106

我想从数组中删除所有假值。在JavaScript中,假值包括false、null、0、""(空字符串)、undefined和NaN。

function bouncer(arr) {
 arr = arr.filter(function (n) { 
    return (n !== undefined && n !== null && n !== false && n !== 0 && n !== "" && isNaN()!=NaN); });
  return arr;
}

bouncer([7, "ate", "", false, 9, NaN], "");

除了NaN测试用例外,以上所有内容都已满足。请问有人能帮我在数组中检查是否包含NaN吗?

26个回答

1

我看到你从未接受过答案。问题是你依赖Logger.log或console.log来查看是否删除了null吗?我认为@LoremIpsum建议的过滤器是最干净的解决方案。

  const src2DArr = [[34], [75], [30], [48], [976], [], [178], [473], [51], [75], [29], [47], [40]];
  Logger.log("src2DArr: " +JSON.stringify(src2DArr)); 
  // [[34],[75],[30],[48],[976],[],[178],[473],[51],[75],[29],[47],[40]]
  
  var src2DArr1 = src2DArr.filter(Boolean);
  Logger.log("src2DArr1: " + JSON.stringify(src2DArr1));
  // [[34],[75],[30],[48],[976],[],[178],[473],[51],[75],[29],[47],[40]] 

1
myArray = [false, null, 0, NaN, undefined, ""];
myArray.map(item => {
//if you want you can write logic
        console.log(item);
    })
    // Get rid of bad values
    .filter(Boolean);

它将返回[]。

1
function removeFalsy(value){

  var val = Boolean(value);
  if(!val)
    return false;
  return true;
}

function bouncer(arr) {

  return arr.filter(removeFalsy);
}

bouncer([7, "ate", "", false, 9]);

0
function compact(ar) {
  let newArr = []
  for (let i = 0; i < ar.length; i++) {
    if (
      !(
        ar[i] === false ||
        ar[i] === null ||
        ar[i] === 0 ||
        ar[i] === '' ||
        ar[i] === undefined ||
        (typeof ar[i] == 'number' && !ar[i])
      )
    ) {
      newArr.push(ar[i])
    }
  }
  return newArr
}

0

使用ECMAscript 5 Vanila JS从数组中删除假值

function bouncer(arr){
  let trueArray = [];
  for(int i=0; i<arr.lenght; i++){
    if(arr[i]===true){
      trueArray.push(arr[i]);
    }    
  }
  return trueArray;
}

使用ECMAscript6Ecma2015方法从数组中删除假值

function bouncer(arr){
   let trueArray = arr.filter( item => item===true);
  return trueArray;
}

0
function bouncer(arr) {

    function filterFalse(value) {
        var a = Boolean(value);
        if (a === true) {
            return a;
        }
        return a;
    }

    function filterArray(x) {
        var y = filterFalse(x);
        if (y) {
            return true;
        } else {
            return false;
        }
    }

    var newArr = arr.filter(filterArray);
    return newArr;
}

bouncer([1, null, NaN, 2, undefined]);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接