手机版

JavaScript学习笔记的数组求和法

时间:2021-11-06 来源:互联网 编辑:宝哥软件园 浏览:

推荐阅读:添加、删除、修改、检查JavaScript学习笔记数组。

通过最近的学习,越来越感受到JavaScript的力量和魅力。仅仅安排一个知识点就让我这样的初学者折腾了很久。这很难说,但仍然非常有效。这几天学到的一些基础知识已经用在了自己的生意上。我很有信心有一天能学会JavaScript。

别的就不多说了,今天一起玩数组求和,看看有什么方法可以实现数组求和。

数组方法

JavaScript中数组的方法有很多,下图可以更好的向大家解释JavaScript有多少种方法,它的功能是什么:

对以前知识的简要回顾:

Push():将一个或多个元素添加到数组的末尾。

unshut():将一个或多个元素添加到数组的开头。

Pop():删除数组的最后一个元素。

Shift():删除数组的第一个元素。

Sort():对数组进行排序。

Reverse():反转数组中数组项的位置。

Concat():合并数组。

Slice():开始删除指定位置的指定数组项,并将删除的数组项构建到新数组中。

Splice():删除、插入和替换数组。

Of () :查找数组中元素从前到后的位置。

lastdexoff () :从后向前搜索数组中元素的位置。

ForEach()、every()、some()、filter()和map():数组迭代。

reduce():数组中的每个值(从左到右)都开始合并,最后变成一个值。

reduceRight():数组中的每个值(从右到左)都开始合并,最后变成一个值。

数组求和

对于今天的用例,假设我们有一个像这样的数组:

var arr=[0,1,2,3,4,5,6,7,8,9];将数组中的项目值相加0 1 2 3 4 5 6 7 8 9。我们应该做什么,或者能做什么?简单来说,就是想办法把数组项一个个加起来。有必要使用数组的迭代吗?我们还能用这些方法实现数组的求和吗?

for循环和while循环。

首先想到的是这两种回收方法,在前一节中也尝试过。又啰嗦了:

//Sum:对于通过arr(函数(){ var Sum=0;函数GetSum(array){ for(var I=0;i array.lengthi ){sum=parseInt(数组[I]);}返回总和;} console . time(' GetSum ');for(var I=0;我1000000;I){ sum=0;getSum(arr);} console . timeend(' GetSum ');//7877.155msconsole.log('用于循环: sum=' sum ');//45})();我们边换边看:

(函数(){ var sum=0;函数GetSum(array){ var I=array . length;while (i - ) {sum=parseInt(数组[I]);}返回总和;} console . time(' GetSum ');for(var I=0;我1000000;I){ var sum=0;getSum(arr);} console . timeend(' GetSum ');//getsum 3360 7690.056 msconsole . log(' use while loop:sum=' sum ');//使用while循环:sum=45 }));除了旧的for和while循环,其他数组迭代方法,如forEach(),every(),some(),filter()和map(),都是在ES5中新添加的。此外,这些方法可以使数组中的每个元素执行一次回调函数。如果是这样的话,你只需要为这个回调函数做一个数组项的累加函数:

函数getSum (item,index,array){ sum=item;}forEach()方法。

forEach()方法使数组的每一项都执行给定的回调函数callbackfn。这样,我们就可以在回调函数getSum中做一个累加计算。

(函数(){ var sum=0;函数getSum (item,index,array){ sum=item;} console . time(' GetSum ');for(var I=0;我1000000;I){ var sum=0;arr . foreach(GetSum);} console . timeend(' GetSum ');//getsum 3360 1348.212 mscon sole . log('使用forEach循环:sum=' sum ');//使用forEach循环:sum=45})()some()方法。

(函数(){ var sum=0;函数getSum (item,index,array){ sum=item;} console . time(' GetSum ');for(var I=0;我1000000;I){ var sum=0;arr . some(GetSum);} console . timeend(' GetSum ');//getsum 3360 1038.737 mscon sole . log('使用一些循环:sum=' sum ');//使用一些loop: sum=45})()map()方法。

(函数(){ var sum=0;函数getSum (item,index,array){ sum=item;} console . time(' GetSum ');for(var I=0;我1000000;I){ var sum=0;arr . map(GetSum);} console . timeend(' GetSum ');//getsum 3360 4568.558 mscon sole . log('使用map循环:sum=' sum ');//使用map循环:sum=45})()filter()方法。

(函数(){ var sum=0;函数getSum (item,index,array){ sum=item;} console . time(' GetSum ');for(var I=0;我1000000;I){ var sum=0;arr . filter(GetSum);} console . timeend(' GetSum ');//getsum 3360 1117.039 mscon sole . log('使用筛选器循环:sum=' sum ');//使用filter loop: sum=45})()every()方法。

every()方法与前面的方法略有不同,因为every()方法只有在执行回调函数的数组中的每一项的结果为真时才会返回,否则将返回false。因为在前面的回调函数中,需要添加return true

(函数(){ var sum=0;函数getSum(item,index,array){ sum=item;返回真;//因为遇到回调函数返回的第一个false时,every方法将停止遍历,所以必须始终返回true };console . time(' GetSum ');for(var I=0;我1000000;I){ sum=0;arr . every(GetSum);} console . timeend(' GetSum ');//1028.892msconsole.log('使用every loop : sum=' sum ');//使用every循环: sum=45 })();reduce()和reduceRight()方法。

reduce()和reduceRight()方法可以接受回调函数callbackfn作为累加器,数组中的每个值(从左到右)开始合并,最终成为一个值。这样就可以将数组的每个元素累加起来,实现数组求和的功能。

首先,创建累加器回调函数:

函数getSum(preval,curValue,index,array){ return preval=curValue;}以前面的数组为例:

函数getSum(preval,curValue,index,array){ return preval curValue;} console . time(' GetSum ');for(var I=0;我1000000;i ){sum=arr.reduce(getSum,0)} console . timeend(' getSum ');//3257.201msconsole.log('使用reduce循环: sum=' sum ');//测试前使用reduce循环:sum=45,reduce()方法耗时最短,这次测试似乎耗时最长,不知道错误发生在哪里,但希望有大神能指导迷宫。reduceRight()方法与reduce()方法相同,只是它从数组的右侧向左侧累加。

摘要

一个接一个,数组的求和基本上都是通过数组遍历来实现的,所以掌握数组中的各种遍历方法就可以轻松实现数组的求和。虽然这些遍历方法可以实现数组的求和,但不同的方法性能不同。本文中的示例可能无法完全说明它们的性能比较。如果你有更好的建议,请分享。

以上内容是对JavaScript学习笔记数组求和法的完整介绍,希望对大家有所帮助!

版权声明:JavaScript学习笔记的数组求和法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。