如何从JavaScript中的数组中删除null,undefined,NaN,0,false和空字符串? [英] how to remove null, undefined, NaN, 0s, falses and empty string from an array in JavaScript?

查看:93
本文介绍了如何从JavaScript中的数组中删除null,undefined,NaN,0,false和空字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我编写了一个脚本,使用.splice()删除任何null,undefined,0,false或空字符串值,但是代码仅删除了NaN和0s.

I wrote a script to remove any null, undefined, 0, false or empty string value using .splice(), but the code has only removed NaN and 0s.

这是我尝试过的:

function remove(arr){ // input [NaN, 0, 15, false, -22, '',undefined, 47, null]
    var bin = [];
    for (var i =0; i<arr.length; i++){
        if (arr[i] == (NaN || 0 || false || "" || undefined || null)){
            arr.splice(arr[i],1);
        }
    }
  console.log(arr); // Expected output [15, -22, 47]
}

推荐答案

代码问题:

  1. 从最后一个元素到第一个元素遍历数组
  2. <代码> Array#splice 希望第一个参数作为索引,而不是项目本身
  3. 要检查元素是否为 NaN ,请使用 isNaN() .
  4. 要与多个值进行比较,请将每个元素分别与每个元素进行比较

工作代码:

function remove(arr) {
    for (var i = arr.length - 1; i >= 0; i--) {
        if (isNaN(arr[i]) || arr[i] === 0 || arr[i] === false || arr[i] === "" || arr[i] === undefined || arr[i] === null) {

        // Which is same as
        // if (!arr[i]) {
            arr.splice(i, 1);
        }
    }

    console.log(arr); // Expected output [15, -22, 47]
}

remove([NaN, 0, 15, false, -22, '', undefined, 47, null]);

使用 Array#filter

arr = arr.filter(e => e);

var input = [NaN, 0, 15, false, -22, '',undefined, 47, null];

var filteredArr = input.filter(e => e);
document.body.innerHTML = '<pre>' + JSON.stringify(filteredArr, 0, 4) + '</pre>';

或者如 @dandavis 所述/how-to-remove-null-undefined-nan-0s-falses-and-empty-string-from-array-in#comment59797644_36076104>评论

Or as said by @dandavis in comment

arr = arr.filter(Boolean);

var input = [NaN, 0, 15, false, -22, '',undefined, 47, null];

var filteredArr = input.filter(Boolean);
document.body.innerHTML = '<pre>' + JSON.stringify(filteredArr, 0, 4) + '</pre>';

这篇关于如何从JavaScript中的数组中删除null,undefined,NaN,0,false和空字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆