美文网首页
JavaScript中filter的用法以及分解数组

JavaScript中filter的用法以及分解数组

作者: 小漫画ing | 来源:发表于2018-05-06 21:29 被阅读0次

filter将数组中的某些元素过滤掉,返回剩下的元素。
和map()类似,Array的filter()也接收一个函数。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。
例子:

(1)保留偶数
var arr=[2,3,4,4,6];
var result=arr.filter(function(s){
     return s%2==0;
});

输出结果为

image.png

(2)把一个Array中的空字符串删掉

var arr=["a","",null,undefined,"c"];
var str=arr.filter(function(s){
return s && s.trim();
});

结果为:

image.png

回调函数

filter()接收的回调函数,其实可以有多个参数。通常我们仅使用第一个参数,表示Array的某个元素。回调函数还可以接收另外两个参数,表示元素的位置和数组本身。

var arr=['a','b','c'];
var r=arr.filter(function(element,index,self){
console.log("element="+element);
console.log("index="+index);
console.log("self="+self);
});

结果为

image.png
利用filter,可以巧妙地去除Array的重复元素:
var r, arr=['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];
r=arr.filter(function(element,index,self){
return self.indexOf(element)===index;
});

结果为:

image.png

去除重复元素依靠的是indexOf总是返回第一个元素的位置,后续的重复元素位置与indexOf返回的位置不相等,因此被filter滤掉了。

分解数组

比如一个文件(words.txt)中有这样一句话:
the day is sunny the the
the sunny is is
目的是遍历出一个单词出现在次数
代码应该如下:

main() {
    String words = read_file('words.txt')//获取文件内容
    String[] wordArray = split(words)//对获取到的文件拆分
    Map<String, Integer> frequency = group(wordArray)//遍历数组
    sort(frequency)//分类
    String output = format(frequency)
    print(output)//输出
}

相关文章

网友评论

      本文标题:JavaScript中filter的用法以及分解数组

      本文链接:https://www.haomeiwen.com/subject/odyckftx.html