本文介绍了如何从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]
}
推荐答案
代码问题:
- 从最后一个元素到第一个元素遍历数组
- 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 所述/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和空字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!