- map():通过指定函数处理数组的每个元素,并返回处理后的数组。(不遍历空数组,不改变原数组,只是相当于把原数组克隆一份,把克隆的这一份的数组中的对应项改变了)
-
let arr = [1,2,3,4,5] console.log(arr.map((item,index,array)=>item+1));结果为[2,3,4,5,6]
-
map() 方法会将数组中元素依次传入方法中,并将方法的返回结果组成新数组返回。
- filter:创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素(跟map差不多,区别就是map返回的是新数组,filter是过滤后的数组,当返回值为条件筛选时就体现出来了(map返回的是布尔值组成的数组,filter则是过滤后的新数组))
-
let arr = [1,2,3,4,5] console.log(arr.filter((item,index,array)=>item>2));结果为[3,4,5]
-
filter会根据函数中的筛选条件将返回的结果组成一个新的数组并返回
- some():用于检测数组中的元素是否满足指定条件(函数提供)(不改变原数组,不遍历空数组,返回值为布尔值,跟every对应)
-
let arr = [1,2,3,4,5] console.log(arr.some((item,index,array)=>item>5));结果为false console.log(arr.some((item,index,array)=>item>4));结果为true
-
some方法会依次遍历数组的每个元素;
-
-
-
- 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测
- 如果没有满足条件的元素,则返回false
-
-
- every:用于检测数组所有元素是否都符合指定条件(通过函数提供)(不改变原数组,不遍历空数组,返回值为布尔值,跟some对应)
-
let arr = [2,3,4,5] console.log(arr.every((item,index,array)=>item>1));结果为true console.log(arr.every((item,index,array)=>item>2));结果为false
-
every和some正好相反:
-
-
-
- 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
- 如果所有元素都满足条件,则返回 true
-
-
- foreach():遍历数组中的每一项(跟map同理,不支持IE,没有返回值)
-
let arr = [1,2,3,4] console.log(arr.forEach((item,index,array)=>item));结果为undefined(没有返回值); arr.forEach((item,index,array)=>console.log(item));结果为1,2,3,4
- 不常用 因为不兼容 也无返回值 跟for of, for, for in 类似
- 遍历的方法还有很多 如:
-
-
- reduce((previousValue, currentValue, index, array)=>previousValue+currentValue,initialValue)累加
- reduceRight((previousValue, currentValue, index, array)=>previousValue+currentValue) 累加,跟reduce一样,不同的是reduceRight是从尾开始遍历
- find((item,index,array)=>item<n) 返回数组中第一个小于n的数值 并结束循环,如果没有就返回undefiend
- findIndex((item,index,array)=>item<n) 返回数组中第一个小于n的数值的索引 并结束循环,如果没有就返回-1
- keys()(ES6新增遍历Object的key 也可以用作数组的遍历,不知道有没有坑,没有做过实际运用)
- values() (ES6新增遍历Object的value 也可以用作数组的遍历,不知道有没有坑,没有做过实际运用)
- entries()(ES6新增遍历Object返回为[key,value]组成的数值 也可以用作数组的遍历,不知道有没有坑,没有做过实际运用)
-
-
-