js编写移除arr中所有值与item相等的元素,不要直接修改数组 arr,返回新数组

这篇博客介绍了如何在JavaScript中不修改原数组的情况下,移除数组中特定值的所有元素,提供了三种不同的实现方式:使用slice和splice结合,使用filter方法,以及使用ES6的箭头函数配合filter。详细解释了每个方法的工作原理和语法,包括slice的复制功能,splice的添加/删除功能以及filter的筛选功能。
摘要由CSDN通过智能技术生成

移除arr中所有值与item相等的元素,不要直接修改数组 arr,返回新数组

    // 移除arr中所有值与item相等的元素,不要直接修改数组 arr,返回新数组
    // 法一(简单写法)
    function remove(arr,item){
        var newArr = []
        // 对arr的拷贝可以使用for循环或者一个技巧slice(0)
        newArr = arr.slice(0)
        var index = newArr.indexOf(item)
        while(index!==-1){
            newArr.splice(index,1)
            index = newArr.indexOf(item)
        }
        return newArr
    }
    console.log(remove([1, 2, 3, 4, 2], 2))

    // 法二(使用filter方法)
    function filterRemove(arr,item){
        return arr.filter(function(e){
            return e!==item
        })
    }
    console.log(filterRemove([1, 2, 3, 4, 2], 2))
    
    // 法三(ES6)
    const removeES = (arr, item) => arr.filter((e) => e !== item);
    console.log(removeES([1, 2, 3, 4, 2], 2))

知识点:

slice() 方法可从已有的数组中返回选定的元素

arrayObject.slice(start,end)

返回值:返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。

说明:请注意,该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。

slice(0)可实现对一个数组的完整拷贝

splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目

注释:该方法会改变原始数组

arrayObject.splice(index,howmany,item1,.....,itemX)
index必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置
howmany必需要删除的项目数量。如果设置为 0,则不会删除项目。
item1, ..., itemX可选。向数组添加的新项目。

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素

注意: filter() 不会对空数组进行检测。 filter() 不会改变原始数组

array.filter(function(currentValue,index,arr), thisValue)
function(currentValue, index,arr)必须。函数,数组中的每个元素都会执行这个函数

①currentValue:必须。当前元素的值

②index:可选。当前元素的索引值

③arr:可选。当前元素属于的数组对象

filter的函数返回值为true则说明符合条件则保留,为false不符合条件则过滤出去

 其他参数为可选,返回值:返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

suoh's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值