题目如下
思路与代码
倒着删除,不用考虑位置
顺着删除也是可以的,但是每次顺着删除后,要i–;
干脆我们倒着来,顺着的代码不说了。直接倒着来!
function removeWithoutCopy(arr, item) {
for(var i=arr.length-1;i>=0;i--){
if(arr[i]==item)
arr.splice(i,1);
}
return arr;
}
配合indexOf函数
function removeWithoutCopy(arr, item) {
while(arr.indexOf(item)!=-1){
arr.splice(arr.indexOf(item),1);
}
return arr;
}
补充知识:ES6—from函数与Set函数
Array.from()方法就是将一个类数组对象或者可遍历对象转换成一个真正的数组。
Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。
arr=[1,1,2,2,2,3,4,5,6,6,7,8,9,9];
console.log(Array.from(new Set(arr)));
这里不知道为什么用from set函数去重后,用splice函数删除item后有一个样例没过,有小伙伴尝试了这个思路后也遇到了这种问题的话T.T,我们评论区见呀!