有返回值,返回一个新的数组,每个元素为调用
的结果
- func
- let list = [1, 2, 3, 4, 5];
- let other = list.map((d, i) => {
- return d * 2;
- });
- console.log(other);
- // print: [2, 4, 6, 8, 10]
有返回值,返回一个符合
条件的元素数组
- func
- let list = [1, 2, 3, 4, 5];
- let other = list.filter((d, i) => {
- return d % 2;
- });
- console.log(other);
- // print: [1, 3, 5]
从左到右而
- .reduce
从右到左循环遍历数组,每次调用接收目前为止的部分结果和当前遍历的值
- .reduceRight
。
- .reduce(callback(previousValue, currentValue, index, array), initialValue)
是最后被调用的回调函数的返回值,
- previousValue
是开始时
- initialValue
被初始化的值。
- previousValue
- currentValue
是当前元素在数组中的索引值。
- index
是对调用
- array
数组的简单引用
- .reduce
- Array.prototype.sum = function (){
- return this.reduce(function (partial, value){
- return partial + value
- }, 0)
- };
- [3,4,5,6,10].sum()
- // <- 28
可以使用
作为对象的字符串生成器
- .reduce
- function concat(input){
- return input.reduce(function (partial, value){
- if (partial) {
- partial += ', '
- }
- return partial + value
- }, '')
- }
- concat([
- { name: 'George' },
- { name: 'Sam' },
- { name: 'Pear' }
- ])
- // <- 'George, Sam, Pear'
返回一个
,判断是否有元素符合
- boolean
条件,如果有一个元素符合
- func
条件,则循环会终止
- func
- let list = [1, 2, 3, 4, 5];
- list.some((d, i) => {
- console.log(d, i);
- return d > 3;
- });
- // print: 1,0 2,1 3,2 4,3
- // return false
需要一个包含两个测试参数的回调函数,并且要产生一下三种返回值之一
- Array.prototype.sort(fn(a,b))
在
- a
前,则返回值小于零
- b
和`b是等价的,则返回值等于零
- a
在
- a
后,则返回值大于零
- b
- [9, 80, 3, 10, 5, 6].sort()
- // <- [10, 3, 5, 6, 80, 9]
- [9, 80, 3, 10, 5, 6].sort(function(a, b) {
- return a - b
- })
- // <- [3, 5, 6, 9, 10, 80]
返回一个
,判断每个元素是否符合
- boolean
条件,有一个元素不满足
- func
条件,则循环终止,返回
- func
- false
- let list = [1, 2, 3, 4, 5];
- list.every((d, i) => {
- console.log(d, i);
- return d < 3;
- });
- // print: 1,0 2,1 3,2
- // return false
。
- func
,
- break
等终止循环
- return
当前操作的数组元素
- value
当前数组的引用
- array
- let list = [1, 2, 3, 4, 5];
- list.forEach((d, i) => {
- this.push(d * 2);
- });
- console.log(other);
- // print: [2, 4, 6, 8, 10]
循环实际是为循环”enumerable“对象而设计的,
- for-in
也可以循环数组,但是不推荐这样使用,
- for in
是用来循环带有字符串
- for–in
的对象的方法
- key
- var obj = {a:1, b:2, c:3};
- for (var prop in obj) {
- console.log("obj." + prop + " = " + obj[prop]);
- }
- // print: "obj.a = 1" "obj.b = 2" "obj.c = 3"
为
- for of
提供,具有
- ES6
接口,就可以用
- iterator
循环遍历它的成员
- for of
循环可以使用的范围包括数组、
- for of
和
- Set
结构、某些类似数组的对象(比如
- Map
对象、
- arguments
对象)、后文的
- DOM NodeList
对象,以及字符串
- Generator
返回一个遍历器对象,用来遍历[键名, 键值]组成的数组。对于数组,键名就是索引值;对于
- entries()
,键名与键值相同。
- Set
结构的
- Map
接口,默认就是调用
- iterator
方法
- entries
返回一个遍历器对象,用来遍历所有的键名。
- keys()
返回一个遍历器对象,用来遍历所有的键值。
- values()
这三个方法调用后生成的遍历器对象,所遍历的都是计算生成的数据结构
- // 遍历数组
- let list = [1, 2, 3, 4, 5];
- for (let e of list) {
- console.log(e);
- }
- // print: 1 2 3 4 5
- // 遍历对象
- obj = {a:1, b:2, c:3};
- for (let key of Object.keys(obj)) {
- console.log(key, obj[key]);
- }
- // print: a 1 b 2 c 3
- //说明:对于普通的对象,for...in循环可以遍历键名,for...of循环会报错。
- //一种解决方法是,使用Object.keys方法将对象的键名生成一个数组,然后遍历这个数组。
- // entries
- let arr = ['a', 'b', 'c'];
- for (let pair of arr.entries()) {
- console.log(pair);
- }
- // [0, 'a']
- // [1, 'b']
- // [2, 'c']
来源: http://www.tuicool.com/articles/vuUfAjm