js能力测评——移除数组中的元素

时间:2021-08-21 03:42:35

移除数组中的元素

题目描述 : 移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组
示例1
输入 [1, 2, 3, 4, 2], 2
输出 [1, 3, 4]

参考答案

注意到题目中说的不要修改原数组,这里有两个思路(一是通过深拷贝得到相同的数组,然后就不需要考虑splice,push等会不会影响原数组;二是利用数组的slice和concat, filter等不影响原数组的方法进行操作)

  • 首层深拷贝(concat,slice, 扩展运算符)
function remove(arr, item) {
var b=[...arr];
for(var i=0;i<b.length;i++){
if(b[i]==item){
b.splice(i, 1);
}
}
return b;
}
function remove(arr, item){
var b=[];
for(var i=0;i<arr.length;i++){
if(arr[i]!==item){
b.push(arr[i]);
}
}
}
  • 利用不影响原数组的方法
function remove(arr, item) {
return arr.filter(i=>i!=item);
}
function remove(arr, item) {
var b=[];
for(var i=0;i<arr.length;i++){
if(arr[i]!=item){
b=b.concat(arr[i]);
}
}
return b;
}