去除数组中指定元素的方法
情况一:如果去除指定元素在数组中不是连续出现比如数组 arr = [3,0,11,0,3,0,66];方法一:使用添加元素的方法.push();var arr = [3, 0, 11, 0, 3, 0, 66];var newArry = [];for (var i = 0; i < arr.length; i++) {if (arr[i]...
·
情况一:如果去除指定元素在数组中不是连续出现
比如数组 arr = [3,0,11,0,3,0,66];
方法一:使用添加元素的方法.push();
var arr = [3, 0, 11, 0, 3, 0, 66];
var newArry = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] != 0) {
newArry.push(arr[i]);
}
}
console.log(newArry);
方法二:使用.splice();
var arr = [3, 0, 11, 0, 3, 0, 66];
for (var i = 0; i < arr.length; i++) {
if (arr[i] == 0) {
arr.splice(i, 1);
}
}
console.log(arr);
情况二:如果去除指定元素在数组中连续出现几个,不进行处理会存在删漏掉的情况
原因:在循环遍历的时候,i是元素的下标值,删除数组中某个元素的时候,循环i的值不变,但是里面的元素少了,相对应的元素就会向前靠,这样就会漏掉相邻的需要删除的元素;用方法二和方法三,就会避免出现这个问题,强力推荐方法三。
比如数组:arr = [3, 7, 11, 0, 0, 0, 3, 0, 55]
方法一:使用添加元素的方法.push();
var arr = [3, 7, 11, 0, 0, 0, 3, 0, 55];
var newArry = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] != 0) {
newArry.push(arr[i]);
}
}
console.log(newArry);
方法二:使用.splice(),使用倒序遍历;
var arr = [3, 7, 11, 0, 0, 0, 3, 0, 55];
for (var i = arr.length-1; i >= 0; i--) {
if (arr[i] == 0) {
arr.splice(i, 1);
}
}
console.log(arr);
方法三:强力推荐这个方法
var arr = [3, 7, 11, 0, 0, 0, 3, 0, 55]
for (var i = 0; i < arr.length; i++) {
if (arr[i] == 0) {
arr.splice(i, 1);
i--;
}
}
console.log(arr);
更多推荐
已为社区贡献1条内容
所有评论(0)