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

移除数组中的元素

题目描述 : 移除数组 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;
}
posted @ 2018-09-05 21:32  小字辈  阅读(268)  评论(0编辑  收藏  举报