数组的迭代方法

数组的迭代方法

ECMAScript 5 为数组定义了 5 个迭代方法。每个方法都接收两个参数:要在每一项上运行的函数(可选的)运行该函数的作用域对象——影响 this 的值。传入这些方法中的函数会接收三个参数:数组项的值、该项在数组中的位置和数组对象本身。根据使用的方法不同,这个函数执行后的返回值可能会也可能不会影响方法的返回值。以下是这 5 个迭代方法的作用。

不生成新数组的迭代器方法:

forEach():对数组中的每一项运行给定函数。这个方法没有返回值。

 function square(num){
    alert(num * num);
 }
 var nums = [1,2,3,4,5];
 console.log(nums.forEach(square));     // Array(5) [1,4,9,16,25]

every():对数组中的每一项运行给定函数,如果该函数对每一项都返回 true,则返回 true

function isEven (num) {
     return num % 2==0; 
}
var evens=[2,4,6,8,10];
var isAllEven = evens.every(isEven);  //当且仅当数组中的所有的元素返回为真,every函数才会返回为真
if(isAllEven){
    alert("all is even");
}else{
    alert("not all is even");
}

some():对数组中的每一项运行给定函数,只要该函数有一项返回 true,则返回 true

var nums = [1,2,3,5,7,9];
function isEven (num) {
	return num % 2==0;
}
alert(nums.some(isEven));   //true
生成新数组的迭代器方法:

map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。

function firstAlpha (word) {
   return word[0].toUpperCase();
}
var words = ["nolan","is","studying","javascript"];
var firstAlphas = words.map(firstAlpha);
//使用join可以去掉连接数组元素的逗号
console.log(firstAlphas.join(""));     //NISJ

filter():对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。

function isEven (num) {
   return num % 2==0;
}
var nums=[1,3,4,6,7,10];            
var evens = nums.filter(isEven);
console.log(evens);  //Array(3) [ 4, 6, 10 ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值