一、map
map()方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果
callback函数会被自动传入三个参数:数组元素,元素索引,原数组本身
let list = [1, 2, 3, 4, 5]; |
二、filter
语法
var new_array = arr.filter(callback[, thisArg]) |
filter()方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素
参数
callback返回true表示保留该元素(通过测试),false则不保留- 用来测试数组的每个元素的函数。调用时使用参数
(element, index, array)。 - 返回true表示保留该元素(通过测试),
false则不保留
- 用来测试数组的每个元素的函数。调用时使用参数
function isBigEnough(value) { |
三、some
返回一个
boolean,判断是否有元素符合func条件,如果有一个元素符合func条件,则循环会终止
some()方法测试数组中的某些元素是否通过由提供的函数实现的测试
const isBiggerThan10 = (element, index, array) => { |
四、every
返回一个
boolean,判断每个元素是否符合func条件,有一个元素不满足func条件,则循环终止,返回false
every方法为数组中的每个元素执行一次callback函数,直到它找到一个使callback返回false(表示可转换为布尔值false的值)的元素。如果发现了一个这样的元素,every方法将会立即返回false。否则,callback为每一个元素返回true,every就会返回true
function isBigEnough(element, index, array) { |
五、reduce和reduceRight
.reduce从左到右而.reduceRight从右到左循环遍历数组,每次调用接收目前为止的部分结果和当前遍历的值
reduce()方法对累加器和数组中的每个元素(从左到右)应用一个函数,将其减少为单个值两种方法都有如下典型用法:
.reduce(callback(previousValue, currentValue, index, array), initialValue)。previousValue是最后被调用的回调函数的返回值,initialValue是开始时previousValue被初始化的值。currentValue是当前被遍历的元素值,
index是当前元素在数组中的索引值。array是对调用.reduce数组的简单引用
Array.prototype.sum = function () { |
可以使用
.reduce作为对象的字符串生成器
function concat (input) { |
六、sort
Array.prototype.sort(fn(a,b))需要一个包含两个测试参数的回调函数,并且要产生一下三种返回值之一
- 如果
a在b前,则返回值小于零 - 如果
a和`b是等价的,则返回值等于零 - 如果
a在b后,则返回值大于零
[9,80,3,10,5,6].sort() |
七、forEach
- 没有返回值,只针对每个元素调用
func。 - 优点:代码简介。
- 缺点:无法使用
break,return等终止循环
value当前操作的数组元素- 当前操作元素的数组索引
array当前数组的引用
let list = [1, 2, 3, 4, 5]; |
八、for in
for-in循环实际是为循环”enumerable“对象而设计的,for in也可以循环数组,但是不推荐这样使用,for–in是用来循环带有字符串key的对象的方法
var obj = {a:1, b:2, c:3}; |
九、for of
for of为ES6提供,具有iterator接口,就可以用for of循环遍历它的成员
for of循环可以使用的范围包括数组、Set和Map结构、某些类似数组的对象(比如arguments对象、DOM NodeList对象)、后文的Generator对象,以及字符串
entries
entries()返回一个遍历器对象,用来遍历[键名, 键值]组成的数组。对于数组,键名就是索引值;对于Set,键名与键值相同。Map结构的iterator接口,默认就是调用entries方法
keys
keys()返回一个遍历器对象,用来遍历所有的键名。
values
values()返回一个遍历器对象,用来遍历所有的键值。
这三个方法调用后生成的遍历器对象,所遍历的都是计算生成的数据结构
// 遍历数组 |