JS迭代器函数大全

有时,我们需要迭代数组中的元素。可以使用循环语句来处理,例如for语句。

JavaScript内置了很多数组可用的迭代方法。

我们先写一点基础代码:

function isEven(x) {
    
    
    // 如果x是2的倍数,就返回true
    console.log(x);
    return x % 2 === 0; 
}
let numbers = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];

我们写了一个判断奇偶的函数,isEven

如果是x是2的倍数,就返回true,否则就返回false

ok,下面我们开始介绍各种用于迭代数组的函数。

用every方法迭代

我们要尝试的第一个方法是everyevery方法会迭代数组中的每个元素,知道返回false

numbers.every(isEven);

在这个例子里,数组numbers的第一个元素是1,它不是2的倍数,因为isEven函数返回false,然后every执行结束。

用some方法迭代

下一步,我们来看some方法,它和every的行为相反,会迭代数组中的每个元素,直到函数返回true

numbers.some(isEven);

在我们的例子里,numbers数组中第一个偶数是2(第二个元素)。第一个被迭代的元素是1,isEven会返回false。第二个被迭代的元素是2,isEven返回true——迭代结束。

用forEach方法迭代

如果要迭代整个数组,可以用forEach方法。它和使用for循环的结果相同。

numbers.forEach(x => console.log(x % 2 === 0));

用map和filter方法迭代

JavaScript还有两个会返回新数组的迭代方法。第一个是map

const myMap = numbers.map(isEven);

数组myMap里的值是:[false,true,false,true,false,true,false,true,false,true,false,true,false,true,false]
它保存了传入map方法的isEven函数的运行结果。这样就很容易知道一个元素是否是偶数。比如,myMap[0]false,因为1不是偶数;而myMap[1]是true,所以2是偶数。

还有一个filter方法,它返回的新数组由使函数返回true的元素组成。

const evenNumbers = numbers.filter(isEven);

在我们的例子里,evenNumbers数组红的元素都是偶数:[2,4,6,8,10,12,14]

使用reduce方法

最后是reduce方法。reduce方法接收一个有如下四个参数的函数:previousValuecurrentValueindexarray。因为indexarray是可选的参数,所以如果用不到它们的话,可以不传。这个函数会返回一个将被叠加到累加器的值,reduce方法停止执行后会返回这个累加器。如果要对一个数组中的所有元素求和,这就很有用。下面是一个例子。

numbers.reduce((previous,current) => previous + current);

输出将是120。

我们上面讲述了很多关于数组可用的迭代函数,完成了一开始写的需求,因篇幅限制,我无法详细介绍各个函数,如果想了解详细的内容,可以查一下MDN的文档,

有任何问题都可以加我联系方式沟通交流。我最近在找实习,有渠道的也可以联系我。

联系方式
QQ:505417246
微信:18331092918
微信公众号:Code程序人生

Guess you like

Origin blog.csdn.net/m0_46171043/article/details/117293971