数组迭代器(一)-《数据结构预算法》

不生成新数组的迭代器

第一个是

forEach

();

var arr=[1,12,2,3,4];
function square(num){
    console.log(num,num*num)
};
arr.forEach(square);

输出结果为:

1 1
12 144
2 4
3 9
4 16

另一个迭代器是

every

,该方法接受一个返回值为布尔类型的函数,对数组中的而每个元素使用该函数。如果所有元素返回true,该方法返回true;

var nums=[1,12,2,3,4];
function isEven(num){
    return num%2===0
};
var even=nums.every(isEven);
console.log(even?"all nums are even":"not all nums are even");

这里result:

not all nums are even

some

也接受一个返回值为boolean的函数,只要有一个元素返回true,该方法就返回true;

var nums=[1,12,2,3,4];
function isEven(num){
    return num%2===0
};
var even=nums.some(isEven);
console.log(even?"even num is included":"no even");

结果是:

even num is included

reduce

接受一个函数返回一个值,不断对累加值和后续元素调用该函数,知道数组中的最后一个元素,最后返回累加值;

function add(runningTotal,currentValue){
    return runningTotal+currentValue
};
var nums=[1,2,3,4,5,6,7,8,9,10];
var sum=nums.reduce(add);
console.log(sum);

其中运行流程如下:

((((((((1+2)+3)+4)+5)+6)+7)+8)+9)+10

reduce方法可以用来将数组中的元素链接成一个长的字符串;

function concat(accumulatedString,item){
    return accumulatedString+item
}
var words=["my ","name ","is ","liu Gang "];
var sentence=words.reduce(concat);
console.log(sentence);
sentence=words.reduceRight(concat);
console.log(sentence);

结果是:

my name is liu Gang 
liu Gang is name my 

其中reduceRight()是从右到左执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liugang0605

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值