javascript中数组的迭代器方法
2015-12-17 20:12
816 查看
是因为一次无意中看了一篇关于javascript闭包的文章,我突然迷上了javascript,被她的美丽多变的语法和特性给折服,哈哈,闲话不说,就让我们一起来学习吧。
第一个迭代器方法是 forEach(),该方法接受一个函数作为参数,对数组中的每个元素 使用该函数。下面这个例子展示了如何使用该方法:
结果大家试一试就知道了。
另一个迭代器方法是 every(),该方法是接受一个返回值是布尔值的函数,对数组里的每一个数使用该函数,若全为ture,则返回ture;否则返回false。
输出为:
all numbers are even
将数组改为:
var nums = [2,4,6,7,8,10];
输出为:
not all numbers are even
some() 方法也接受一个返回值为布尔类型的函数,只要有一个元素使得该函数返回 true, 该方法就返回 true。比如:
该程序的输出为:
some numbers are even no numbers are even
reduce() 方法接受一个函数,返回一个值。该方法会从一个累加值开始,不断对累加值和 数组中的后续元素调用该函数,直到数组中的最后一个元素,最后返回得到的累加值。下 面这个例子展示了如何使用 reduce() 方法为数组中的元素求和:
reduce() 方法和 add() 函数一起,从左到右,依次对数组中的元素求和,其执行过程如下 所示:
add(1,2) -> 3
add(3,3) -> 6
add(6,4) -> 10
add(10,5) -> 15
add(15,6) -> 21
add(21,7) -> 28
add(28,8) -> 36
add(36,9) -> 45
add(45,10) -> 55
reduce() 方法也可以用来将数组中的元素连接成一个长的字符串:
JavaScript 还提供了 reduceRight() 方法,和 reduce() 方法不同,它是从右到左执行。下面 的程序使用 reduceRight() 方法将数组中的元素进行翻转:
本文章参考算法与数据结构javascript描述
第一个迭代器方法是 forEach(),该方法接受一个函数作为参数,对数组中的每个元素 使用该函数。下面这个例子展示了如何使用该方法:
[code]function square(num){ print(num, num * num); } var nums = [1,2,3,4,5,6,7,8,9,10]; nums.forEach(square);
结果大家试一试就知道了。
另一个迭代器方法是 every(),该方法是接受一个返回值是布尔值的函数,对数组里的每一个数使用该函数,若全为ture,则返回ture;否则返回false。
[code] function isEven(num) { if(num%2===0) return true; else return false; } var nums = [2,4,6,8,10]; var even = nums.every(isEven); if (even) { print("all numbers are even"); } else { print("not all numbers are even"); }
输出为:
all numbers are even
将数组改为:
var nums = [2,4,6,7,8,10];
输出为:
not all numbers are even
some() 方法也接受一个返回值为布尔类型的函数,只要有一个元素使得该函数返回 true, 该方法就返回 true。比如:
[code]function isEven(num) { return num % 2 == 0; } var nums = [1,2,3,4,5,6,7,8,9,10]; var someEven = nums.some(isEven); if (someEven) { print("some numbers are even"); } else { print("no numbers are even"); } nums = [1,3,5,7,9]; someEven = nums.some(isEven); if (someEven) { print("some numbers are even"); } else { print("no numbers are even"); }
该程序的输出为:
some numbers are even no numbers are even
reduce() 方法接受一个函数,返回一个值。该方法会从一个累加值开始,不断对累加值和 数组中的后续元素调用该函数,直到数组中的最后一个元素,最后返回得到的累加值。下 面这个例子展示了如何使用 reduce() 方法为数组中的元素求和:
[code]function add(runningTotal, currentValue) { return runningTotal + currentValue; } var nums = [1,2,3,4,5,6,7,8,9,10]; var sum = nums.reduce(add); print(sum); // 显示 55
reduce() 方法和 add() 函数一起,从左到右,依次对数组中的元素求和,其执行过程如下 所示:
add(1,2) -> 3
add(3,3) -> 6
add(6,4) -> 10
add(10,5) -> 15
add(15,6) -> 21
add(21,7) -> 28
add(28,8) -> 36
add(36,9) -> 45
add(45,10) -> 55
reduce() 方法也可以用来将数组中的元素连接成一个长的字符串:
[code]function concat(accumulatedString, item) { return accumulatedString + item; } var words = ["the ", "quick ","brown ", "fox "]; var sentence = words.reduce(concat); print(sentence); // 显示 "the quick brown fox"
JavaScript 还提供了 reduceRight() 方法,和 reduce() 方法不同,它是从右到左执行。下面 的程序使用 reduceRight() 方法将数组中的元素进行翻转:
[code]function concat(accumulatedString, item) { return accumulatedString + item; } var words = ["the ", "quick ","brown ", "fox "]; var sentence = words.reduceRight(concat); print(sentence); // 显示 "fox brown quick the"
本文章参考算法与数据结构javascript描述
相关文章推荐
- 解析json文件
- JavaScript--基本包装类型
- 轻松学习JavaScript二十:DOM编程学习之获取节点
- js关键字方法名
- url是jsp后跟参数
- JSTREE 实现AJAX重载入时刷新所有节点树
- WebForm框架页面上js修改服务端控件导致后台不能正确获取到控件值的问题【总结】
- Ext.js问题重现整理(3)(combo)
- Ext.js5的数组表格(3)
- js 中时间大小比较和合法性校验check(时分校验,年月日时分秒校验,年月日时分校验)
- js check IP 端口校验
- 一种简单快速的模板解析方法,活用with javascript版
- loadJS
- JS 分片代码
- 向前奔跑中、、、
- JavaScript 文章备注
- javascript数组的知识点讲解
- JSTL基础
- 用AJAX,JSON在百度搜索栏内获取联想关键字
- JavaScript时间工具类