如何从JavaScript中的数组中删除null,undefined,NaN,0s,false和空字符串?(how to remove null, undefined, NaN, 0s, falses

编程入门 行业动态 更新时间:2024-10-10 21:25:46
如何从JavaScript中的数组中删除null,undefined,NaN,0s,false和空字符串?(how to remove null, undefined, NaN, 0s, falses and empty string from an array in JavaScript?)

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

这是我试过的:

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

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.

Here is what I tried:

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

最满意答案

代码中的问题:

迭代从最后一个元素到第一个元素的数组 Array#splice需要第一个参数作为索引,而不是项目本身 要检查元素是否为NaN ,请使用isNaN() 。 要与多个值进行比较,请将各个元素与每个项目进行比较

工作代码:

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在评论中所说的

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

Problem in code:

Iterate over array from last element to first element Array#splice expects first argument as index, not the item itself To check if an element is NaN, use isNaN(). To compare with multiple values, compare the elements individually with each item

Working code:

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


Use 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>'; 
  
 

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

更多推荐

本文发布于:2023-08-03 09:00:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1386276.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:组中   空字符串   NaN   undefined   null

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!