题目描述: 移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回
解决办法
1. splice()
splice
会改变arr
数组的长度,arr.length
改变;- 每移除一个元素,后面的就会前移,例如:移除第一个
arr[1]=2
后,arr
数组变为[1, 2, 3, 4, 2, 2]
,原来的arr[2]=2
就会变成arr[1]=2
function removeWithoutCopy(arr, item) {
for(var i = 0; i < arr.length; i++){
if(item == arr[i]){
arr.splice(i,1);
i--; //执行i--,才能保证不会漏掉某个元素
}
}
return arr;
}
var arr = [1, 2, 2, 3, 4, 2, 2];
document.write(removeWithoutCopy(arr,2));
2. indexOf() + splice()
arr.indexOf(item)
:表示查找arr
数组里的item
元素indexOf()
方法可返回某个指定的字符串值在字符串中首次出现的位置,如果没有找到匹配的字符串则返回 -1。
function removeWithoutCopy(arr, item) {
while (arr.indexOf(item) !== -1) {
//直接查找item,查找成功进入循环
arr.splice(arr.indexOf(item), 1);
}
return arr;
}
var arr = [1, 2, 2, 3, 4, 2, 2];
document.write(removeWithoutCopy(arr,2));