es6filter函数的用法
ES6的Array的filter(方法是一个非常强大的数组方法,它用于过滤出满足指定条件的数组元素,并将这些元素返回为新的数组。本文将对ES6的filter(函数的用法进行详细介绍。
filter(方法的基本语法如下:
array.filter(callback(element[, index[, array]])[, thisArg])
参数说明:
1. callback:一个用来测试数组的每个元素的函数。返回值为true时,该元素被保留;返回值为false时,该元素被过滤掉。该函数接受三个参数:element(当前遍历到的元素)、index(当前元素在数组中的索引)和array(原始数组)。
2. thisArg(可选):执行callback函数时使用的this值。
filter(方法的返回值是一个新的数组,其中包含满足条件的数组元素。
下面是一些使用filter(方法的示例:
示例1:过滤出大于0的数组元素
```javascript
const numbers = [-1, 2, -3, 4, -5];
const positiveNumbers = numbers.filter(function(number)
return number > 0;
});
console.log(positiveNumbers); // [2, 4]
```
在上面的例子中,我们使用filter(方法过滤出大于0的数组元素。回调函数判断元素是否大于0,如果是则保留,否则过滤掉。
示例2:过滤出偶数
```javascript
const numbers = [1, 2, 3, 4, 5, 6];
const evenNumbers = numbers.filter(function(number)
return number % 2 == 0;
});
console.log(evenNumbers); // [2, 4, 6]
```
在这个例子中,我们使用filter(方法过滤出偶数。回调函数使用了求模运算符判断元素是否为偶数。
示例3:过滤出包含指定字符的字符串
```javascript
const names = ['Tom', 'Jerry', 'Alice', 'Bob'];
const filteredNames = names.filter(function(name)
return name.includes('o');
});
console.log(filteredNames); // ['Tom']
```
在这个例子中,我们使用filter(方法过滤出包含字母'o'的字符串。回调函数使用includes(方法判断字符串中是否包含指定字符。
示例4:使用箭头函数
```javascript
const numbers = [1, 2, 3, 4, 5];
const evenNumbers = numbers.filter(number => number % 2 == 0);
filter过滤对象数组console.log(evenNumbers); // [2, 4]
```
在这个例子中,我们使用箭头函数来简化回调函数的写法。
示例5:过滤掉数组中的null和undefined
```javascript
const values = [null, 1, undefined, 2, 3, null];
const filteredValues = values.filter(value => value != null && value != undefined);
console.log(filteredValues); // [1, 2, 3]
```
在这个例子中,我们使用filter(方法过滤掉数组中的null和undefined。
示例6:使用thisArg参数
```javascript
function isPositive(element)
return element > 0;
const numbers = [-1, 2, -3, 4, -5];
const positiveNumbers = numbers.filter(isPositive, this);
console.log(positiveNumbers); // [2, 4]
```
在这个例子中,我们定义了一个isPositive函数,然后将其作为filter(方法的回调函数,并且通过thisArg参数指定了this的值。
filter(方法是一个非常强大和灵活的方法,可以根据不同的条件过滤数组元素,简化代码的
编写,并且提高代码的可读性和可维护性。在实际应用开发中,我们经常会使用filter(方法来筛选和操作数组,为我们解决很多实际问题提供了便捷的方式。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论