[英]Deleting certain elements from an array in Javascript
我试图编写一个程序,将删除数组中的任何零,空字符串,null或未定义的值。 但是当我运行这个数组:[1,null,2,3,0,-1,1.1]时,通过下面的代码返回数组,其中null和0值仍在数组中。 有帮助吗?
function cleanArray(arr) {
var i = 0;
for (i; i < arr.length; i++) {
if (arr[i] === 0 || arr[i] === '' || arr[i] === null || arr[i] === undefined) {
arr.splice(i, 1);
i--;
}
return arr;
}
}
因为return arr;
,你已经放在你的for循环中。 一旦代码运行通过第一个元素,它就会命中返回并使用数组离开函数,就像第一次运行循环一样。
只需将return语句移到for循环之外,如下所示:
function cleanArray(arr) {
var i = 0;
for (i; i < arr.length; i++) {
if (arr[i] === 0 || arr[i] === '' || arr[i] === null || arr[i] === undefined) {
arr.splice(i, 1);
i--;
}
}
return arr;
}
你需要移动return arr;
在for循环之外。
function cleanArray(arr) {
var i = 0;
for (i; i < arr.length; i++) {
if (arr[i] === 0 || arr[i] === '' || arr[i] === null || arr[i] === undefined) {
arr.splice(i, 1);
i--;
}
}
return arr;
}
使用.filter()和falsy值删除不需要的项目
function cleanArray(arr) {
return arr.filter(function (item) {
return !!item;
//or return arr[i] !== 0 && arr[i] !== '' && arr[i] !== null && arr[i] !== undefined
})
}
非常简单,
arr = arr.filter(function(item) {
return !!item;
});
但这会让真实和其他非数字值通过
arr = arr.filter(function(item) {
return !!item && !isNaN(item);
});
可能工作得更好(没有自己测试过 - 给你一些尝试)
您可以使用数组过滤器
var arr = [1,null,2,3,0,-1,1.1];
var filteredArr = arr.filter(function(i){
// if in javascript checks for truthy values
if(i) {
return i;
}
});
console.log(filteredArr); // [1, 2, 3, -1, 1.1]
在这里演示
function cleanArray(arr) {
var i = 0, newArr = [];
for (i; i < arr.length; i++) {
if (arr[i]) {
newArr.push(arr[i]);
}
}
return newArr;
}
这肯定会起作用。 希望我有所帮助。 这里的小提琴: https : //jsfiddle.net/rok_ed/coakcd3L/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.