题目描述: 移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回
解决方法
1. 直接赋值
-
如果不定义
index
,直接写arr1[i] = arr[i];
,打印出来的arr
长度为4,但实际长度应该为3。- 打印出
arr1[2] = undefine
,这是由于在for循环里i会一直被赋值为0,1,2,3
,但是只有0,2,3
会进入if里,arr[1] = 2
由于被移除没有进入if中,所以只有arr1[0]、arr1[2]、arr[3]
被赋值了。所以要重新给arr1
定义下标变量index
- 打印出
function remove(arr, item) {
//var arr1 = new Array();
var arr1 = []; //定义数组arr1
var index = 0; //定义一个变量,作为arr1的下标值
for(var i = 0; i < arr.length;i++){
if(arr[i] != item){
arr1[index] = arr[i];
index++;
}
}
return arr1; //1,3,4
}
var arr = [1,2,3,4];
document.write(remove(arr,2));
2. push()
- 将每一个符合条件的
arr[i]
放到arr1
数组的末尾
function remove(arr, item) {
var arr1 = [];
for(var i = 0; i < arr.length;i++){
if(arr[i] != item){
arr1.push(arr[i]);
}
}
return arr1; //1,3,4
}
var arr = [1,2,3,4];
document.write(remove(arr,2));
3. splice()
- 把
arr
数组的值赋给arr1
,当item == arr[i]
时删掉arr1[i]
function remove(arr, item) {
var arr1 = arr;
for(var i = 0; i < arr.length; i++){
if(item == arr[i]){
arr1.splice(i,1);
}
}
return arr1; //1,3,4
}
var arr = [1,2,3,4];
document.write(remove(arr,2));
4. filter()
- 返回true是表示保留该元素(通过测试,该元素保留至新数组),false时表示移除该元素
function remove(arr, item) {
return arr.filter((item1) => {
return item1 != item;
})
}
var arr = [1,2,3,4];
document.write(remove(arr,2));