数组求和方法比较
2016-04-20 23:50
435 查看
数组方法介绍:
![](http://cdn.w3cplus.com/cdn/farfuture/tl-SyDkji2RkuY0gAXS4sTJx3nMeC00FgVwRbKtCv_I/mtime:1457620535/sites/default/files/blogs/2016/1603/array.jpg)
every() 检测数值元素的每个元素是否都符合条件。
filter() 检测数值元素,并返回符合条件所有元素的数组。
map() 通过指定函数处理数组的每个元素,并返回处理后的数组。
some() 用于检测数组中的元素是否满足指定条件(函数提供)。
reduce() 数组中的每个值(从左到右)开始合并,最终为一个值
reduceRight() 数组中的每个值(从右到左)开始合并,最终为一个值
eval() 计算 JavaScript 字符串,并把它作为脚本代码来执行。
for 循环代码块一定的次数
while 当指定的条件为 true 时循环指定的代码块
do/while 同样当指定的条件为 true 时循环指定的代码块
for in 循环遍历对象的属性
forEach 调用数组中的每个元素。
具体方法及代码:
首先设定一个作为数据源的数组var arr = [1, 2, 3, 4, 5, 6,7,8,9,10];
every()方法:
(function() { var sum = 0; function getSum(item, index, array) { sum += item; console.log(sum); return true;//由于every方法是会在遇到回调函数返回的第一个false时停止遍历所以需要始终返回true }; arr.every(getSum); console.log("use every:sum = " + sum); })();
some()方法:
(function() { var sum = 0; function getSum(item, index, array) { sum += item; console.log(sum); }; arr.some(getSum); console.log("use some:sum = " + sum); })();
array.filter()方法:
(function() { var sum = 0; function getSum(item, index, array) { sum += item; console.log(sum); }; arr.filter(getSum); console.log("use filter:sum = " + sum); })();
array.map()方法:
(function() { var sum = 0; function getSum(item, index, array) { sum += item; console.log(sum); }; arr.map(getSum); console.log("use map:sum = " + sum); })();
froEach()方法:
(function() { var sum = 0; function getSum(item, index, array) { sum += item; console.log(sum); }; arr.forEach(getSum); console.log("use forEach:sum = " + sum); })();
reduce()正向归并方法:
arr.reduce(function(prevResult, item, index, array) { return prevResult += item; });
reduceRight()逆向归并方法:
arr.reduceRight(function(prevResult, item, index, array) { return prevResult += item; });
for循环方法
(function() { for (var i = 0, sum = 0; i < arr.length; i++) { sum += arr[i]; console.log(sum); } console.log("use for:sum = " + sum); })();
while循环方法
(function(){ var i = 0, sum = 0; while(i<arr.length){ sum+=arr[i]; console.log(sum); i++; } console.log("use while:sum = " + sum); })();
for -in方法
(function() { var sum = 0; for (var index in arr) { sum += arr[index]; console.log(sum); } console.log("use for-in:sum = " + sum); })();
forEach()方法(改写)
var calc = { sum: 0 }; function getSum(item, index, array) { this.sum += item; console.log(this.sum); } arr.forEach(getSum,calc); console.log('use forEach and change this:sum=' + calc.sum);
join()方法
eval(arr.join("+")); /*这里先将所有数组项通过字符串"+"连为一个字符串"1+2+3+4+5+6",然后返回的这个字符串传给eval()方法,eval()方法接收了这段字符串后,就直接将这段字符串中的代码放在当前作用域下执行了。*/
效率比较:
console.time("getSum"); for (var i = 0; i < 1000000; i++){ sum = 0; getSum(arr); } console.timeEnd("getSum");//获得计算时间;
比较:浏览器–Google Chrome
forEach方法(1264.000ms)<every方法(1276.000ms)<filter方法(1416.000ms)<some方法(1448.000ms)<reduce方法(4061.000ms)<map方法(4695.000ms)<for方法(8733.000ms)<while方法(9541.000ms)
参考文章:
《JavaScript Array 对象》;
《【JS趣味】数组求和的方法收集》;
《JavaScript学习笔记:数组求和方法 》
相关文章推荐
- 互联网网站的反爬虫策略浅析
- C++异常what()函数重写
- 打Log 轻松理解getDimension getDimensionPixelOffset getDimensionPixelSize
- Linux基础11_条件判断及回圈
- java事务(二)——本地事务
- Promise/Deferred
- 测试作业
- spring的7个模块
- 【FastCV】FastCV实例1
- MAVEN 多源代码目录配置
- linux学习笔记(三)
- C++第4次实验剩余项目选做(非实验博客和作业博客)
- PHP常用函数汇总
- Dell DRAC的重启方法
- leetcode笔记:Maximal Square
- highcharts加载数据库数据(java版)
- Mantle的优缺点
- Java基础-对象导论
- 机器学习:logistic回归
- Linux基础10_正则表达式及扩展