[译]Javascript数列filter方法

本文翻译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 function
function IsEven(value, index, array) 
{
    if (value % 2 == 0) 
    {
        return true;
    }
    else 
    {
        return false;
    }
}

// Source array
var myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

// Pass the callback function as argument to the filter method
var result = myArray.filter(IsEven);

document.write(result);

Output : 2,4,6,8,10

例子2: 在例子1中我们先定义了一个callback函数,然后将其作为filter方法的参数.在以下的例子中,我们则将callback函数在filler方法中作为匿名函数造出来

// Source array
var myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

// callback function created directly in the filter method as anonymous function
var 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

原文地址:https://www.cnblogs.com/otakuhan/p/7712920.html