本文翻译youtube上的up主kudvenkat的javascript tutorial播放单
源地址在此:
https://www.youtube.com/watch?v=PMsVM7rjupU&list=PL6n9fhu94yhUA99nOsJkKXBqokT3MBK0b
filter()方法会制造一个新的数列,然后根据callback函数的条件来填充这个数列
格式:array.filter(callbackFunction[,thisArg])
参数
callbackFunction -- 必须,数列的每一个元素都会call这个函数.如果函数返回真,则元素保留,反之则被过滤掉
thisArg -- 非必须,一个可以在callback函数中被this关键字refer的对象
filter方法对于数列中的每一个元素都会呼出这个callback函数.如果对于每一个元素,callback函数都返回假,那么新数列的长度则为0
callback函数格式
function callbackFunction(value, index, array)
callback函数的参数
value -- 数列中的元素的值
index -- 数列中元素的index位置
array -- 包含元素的源数列对象
例子1: 从myArray中只获取所有的偶数
// Callback functionfunction IsEven(value, index, array) { if (value % 2 == 0) { return true; } else { return false; }}// Source arrayvar myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];// Pass the callback function as argument to the filter methodvar result = myArray.filter(IsEven);document.write(result);
Output : 2,4,6,8,10
例子2: 在例子1中我们先定义了一个callback函数,然后将其作为filter方法的参数.在以下的例子中,我们则将callback函数在filler方法中作为匿名函数造出来
// Source arrayvar myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];// callback function created directly in the filter method as anonymous functionvar result = myArray.filter(function (v, i, a) { return v % 2 == 0 });document.write(result);
Output : 2,4,6,8,10
例子3:将Javascript数列中的重复项移除
var myArray = ["Sam", "Mark", "Tim", "Sam"];var uniqueItems = myArray.filter(function (v, i, a) { return a.indexOf(v) == i });document.write(uniqueItems);
Output : Sam,Mark,Tim