for..of vs. for..in 语句
for..of和for..in均可迭代一个列表,但是用于迭代的值却不同
for..in迭代的是对象的 键 的列表
for..of则迭代对象的键对应的值
1 | let list = [4, 5, 6]; |
for..in可以操作任何对象;它提供了查看对象属性的一种方法
for..of关注于迭代对象的值
1 | let pets = new Set(["Cat", "Dog", "Hamster"]); |
数组map方法
map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果,必须有返回值
1 | let numbers = [1, 5, 10, 15]; |
使用 map 重新格式化数组中的对象
1 | var kvArray = [{key: 1, value: 10}, |
反转字符串
1 | var str = '12345'; |
find()
find() 方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined,返回符合条件的数组的值
1 | function isBigEnough(element) { |
entries()
entries() 方法返回一个新的Array Iterator对象,该对象包含数组中每个索引的键/值对。
1 | var arr = ["a", "b", "c"]; |
keys()
keys() 方法返回一个新的Array迭代器,它包含数组中每个索引的键
1 | let arr = ["a", "b", "c"]; |
values()
values() 方法返回一个新的 Array Iterator 对象,该对象包含数组每个索引的值。
1 | let arr = ['w', 'y', 'k', 'o', 'p']; |
数组的方法entries()、keys()、values()都会返回Array Iterator 对象,可以使用for…of…直接遍历,也可以调取迭代期的next()方法
every()
返回值为boolean,检测数组的每一项是否可以通过callback函数,如果遇到false,循环就结束,否则返回true
1 | function isBigEnough(element, index, array) { |
filter()
创建一个新数组, 通过回调函数返回结果为true的集合
1 | function isBigEnough(element) { |
forEach()
forEach() 方法对数组的每个元素执行一次提供的函数。
1 | let a = ['a', 'b', 'c']; |
reduce() 返回值为数组累计的结果
reduce() 方法对累加器和数组中的每个元素 (从左到右)应用一个函数,将其减少为单个值。
array.reduce(function(accumulator, currentValue, currentIndex, array), initialValue)
accumulator 上一次调用回调返回的值,或者是提供的初始值(initialValue)
initialValue 其值用于第一次调用 callback 的第一个参数。如果没有设置初始值,则将数组中的第一个元素作为初始值。空数组调用reduce时没有设置初始值将会报错
1 | var total = [0, 1, 2, 3].reduce(function(sum, value) { |
计算数组中每个元素出现的次数
1 | var names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice']; |
对于一个数组中的元素全是对象,每个对象又包含一个特定数组的情况,我们可以使用扩展运算符外加一个初始值的方式,来连接所有的特定数组
1 | var friends = [{ |
reduceRight()
reduceRight() 方法接受一个函数作为累加器(accumulator)和数组的每个值(从右到左)将其减少为单个值。
1 | let flattened = [ |
some()
some() 方法测试数组中的某些元素是否通过由提供的函数实现的测试。有一个结果为真返回即为true,返回boolean
与every()方法相反,every()遇到false就会循环结束,而some遇到true就会结束
测试数组元素的值
1 | function isBigEnough(element, index, array) { |