问题描述:
移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回。
输入:
[1, 2, 2, 3, 4, 2, 2], 2
输出:
[1, 3, 4]
解法一:将数组中等于item的项都用splice()方法删除,记得删除后要让i后退一位,数组长度减1。也看到有人倒着删除,就不用考虑位置关系了。
function removeWithoutCopy(arr, item) {
for(var i=0; i<arr.length;i++){
if(arr[i]==item){
arr.splice(i,1);
i--;
arr.length--;
}
}
return arr;
}
解法二:用indexOf()查找数组中等于item的数的位置,还是用splice()删除。
function removeWithoutCopy(arr, item) {
while(arr.indexOf(item)>=0 && arr.indexOf(item)<=arr.length){
var pos = arr.indexOf(item);
arr.splice(pos,1);
}
return arr;
}
解法三:
链接:https://www.nowcoder.com/questionTerminal/a93dd26ebb8c425d844acc17bcce9411
来源:牛客网
function removeWithoutCopy(arr, item) {
for(var i in arr){
arr.splice(i,1);
}
return arr;
}