JS中filter的使用

本文详细介绍了JavaScript中的filter方法,用于过滤数组元素。filter方法接收一个回调函数,返回值为true的元素会被保留,新数组不会改变原数组。示例中展示了如何利用filter筛选大于3的数以及去除数组重复元素。通过indexOf判断数组中元素的唯一性,实现去重功能。
摘要由CSDN通过智能技术生成

JS中filter的使用

filter方法是ES6新增的一种用来过滤的方法。可以用来迭代一个数组,并且按给出的条件过滤出符合的元素。
filter方法传入一个回调函数, 这个回调函数会携带一个参数,参数为当前迭代的项。
回调函数返回true的项会保留在数组中,返回false的项会被过滤掉。(filter方法不会改变原数组)
filter方法传入两个参数filter(回调函数(数组中的每个元素都会执行这个回调函数),对象)

格式为:newArr=array.filter(function(item,index,arr), thisValue);
function(item,index,arr):回调函数,必传的参数,item为必须值,当前元素的值;index为可选值,当前元素的下标;arr为可选,当前元素属于的数组对象。
	数组中的每个元素都会执行这个回调函数,执行这个回调函数,当元素满足条件,再会被留下;不符合条件的元素会被过滤掉。
	返回一个由满足条件组成的新数组(filter方法不会改变原数组)
thisValue:可选,是一个对象,该对象作为该执行回调时使用,传递给函数,用作this的值。若省略了thisValue,this的值为undefinded。

例如:

let arr=[1,2,3,4,5,6];
let newArr=arr.filter(item=>{
	return item>=3;
}
console.log(newArr);// newArr=[3,4,5,6]

利用filter可以巧妙地去除Array的重复元素:

var  r;
var arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];
r = arr.filter(function (element, index, self) {
	return self.indexOf(element) === index;
});
console.log(r.toString());//[apple,strawberry,banana,pear,orange]
注:去除重复元素依靠的是indexOf总是返回第一个元素的位置,后续的重复元素位置与indexOf返回的位置不相等,因此被filter滤掉了。
JavaScriptfilter()是一个数组方法,用于过滤数组的元素并返回符合条件的新数组。filter()方法接受一个函数作为参数,该函数定义了过滤的规则。该函数会遍历数组的每个元素,并根据定义的条件进行筛选。如果函数返回true,则将该元素包含在返回的新数组;如果函数返回false,则将该元素排除在外。 使用filter()方法的语法如下: array.filter(function(currentValue, index, arr), thisValue) 其,currentValue表示数组当前正在遍历的元素,index表示当前元素的索引,arr表示原始数组。 以下是一个使用filter()方法进行数组去重的示例: ```javascript function unique(arr) { return arr.filter(function(item, index, arr) { return arr.indexOf(item, 0) === index; }); } var arr = [1, 1, 'RUNOOB', 'RUNOOB', true, true, 15]; console.log(unique(arr)); // 输出 [1, "RUNOOB", true, 15] ``` 以上示例,unique()函数接受一个数组作为参数,并使用filter()方法进行去重操作。在filter()方法,通过比较当前元素在原始数组的第一个索引和当前索引值,来判断是否为重复元素。返回的新数组即为去重后的结果。 另外,还可以使用filter()方法进行其他类型的筛选。例如,下面的示例演示了如何使用filter()方法筛选出数组不重复的水果名称: ```javascript var arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry']; var temp_arr = arr.filter(function (element, index, self) { return self.indexOf(element) === index; }); console.log(temp_arr); // 输出 ["apple", "strawberry", "banana", "pear", "orange"] ``` 以上示例使用filter()方法结合indexOf()方法筛选出了数组不重复的水果名称。返回的temp_arr数组只包含了不重复的元素。 综上所述,使用filter()方法可以对数组进行条件筛选,并返回符合条件的新数组。这个方法在JavaScript是非常常用的数组操作之一。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [JS filter()方法 介绍和使用](https://blog.csdn.net/weixin_39501680/article/details/122035254)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [JSfilter()方法的使用](https://blog.csdn.net/weixin_45811256/article/details/115543700)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值