移除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不符合条件则过滤出去
其他参数为可选,返回值:返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。