比如外部有一个变量 string, 如何传到filter函数中,进行过滤
var arr = ["abc", "abcd", "abcde"];
var string = "abc";
arr.filter(function(item, index, array){
return item == string;
})
返回数组中值为"abc"的项
比如外部有一个变量 string, 如何传到filter函数中,进行过滤
var arr = ["abc", "abcd", "abcde"];
var string = "abc";
arr.filter(function(item, index, array){
return item == string;
})
返回数组中值为"abc"的项
https://developer.mozilla.org...
这是数组的方法,不是字符串的方法
句法
var newArray = arr .filter(callback [,thisArg ])//这里虽然有个参数,但是也是一个数组,可以在使用时,指定所传入的是哪个数组
参数
callback
函数是一个谓词,用于测试数组的每个元素。返回true保留元素,false否则采用三个参数:
element
正在数组中处理的当前元素。
index
在数组中正在处理的当前元素的索引。
array
数组 filter 被调用。
thisArg Optional
可选的。this执行时使用的值callback。
返回值
具有通过测试的元素的新数组 //注意 连返回值都是一个数组
也就是说他的结构是这样的。
1.先得有个数组arr
2.arr.filter(参数1:回调函数(可以是forEach,普通函数,等等只要有返回值返回一个判断条件,让fliter去做筛选,因为这本身就是过滤器,过滤器得有过滤条件,就是通过这个回调函数返回的),参数2:数组(可有可无))
例子
var words = ["spray", "limit", "elite", "exuberant", "destruction", "present"];
var longWords = words.filter(function(word,words ){
return word.length > 6;
});//因为这一个本身就要有返回新数组的,所以要用变量接住。
console.log(longWords);
总结:从头到尾,没有字符串的事。
1.filter内可以直接使用外部参数
var arr = ["abc", "abcd", "abcde"];
var string = "abc";
arr.filter((item)=>{
return item == string;
})
2.绑定作用域this为string
var arr = ["abc", "abcd", "abcde"];
var string = "abc";
arr.filter(function(item, index, array){
return item == this;
},string)
filter可以传入闭包
var arr = ["abc", "abcd", "abcde"];
arr.filter(function(string){
return (item) => {
return item == string
}
})
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
也许你是想要外部传入变量到一个内部逻辑,那么可以试试约定一个位置来存放这个变量,然后
filter
里跳过这个位置: