数组迭代

2017-07-05  本文已影响0人  他在发呆

公共:都有两个参数
要在每一项上运行的函数 --------- 和该函数的作用域

var arr = [1,2,3,4,5,4,3,2,1]

其中every()和some()比较类似,他们都用于查询数组中的某个项是否满足某个条件。 对于every()来说,传入的参数必须每一项都返回true,这个方法才返回true. 而some()只要有一项返回true,就返回true。

var everyResult = arr.every((item, index, array) => item > 2})

everyResult  // false
var someResult = arr.some((item, index, array) => item > 2})

someResult // true

filter() 返回所有满足条件的项

var filterResult = arr.filter((item, index, array) => item > 2})

filterResult // 3,4,5,4,3

map 返回一个数组,而这个数组的每一项都是在原始数组的对应项上运行传入函数的结果。

var mapResult = arr.map((item, index, array) => item * 2})

mapResult// 2,4,6,8,10,8,6,4,2

indexOf('bcd', 2) --------------- 返回全匹配元素的下标,优先返回第一个
数组元素不接受对象,没有匹配元素返回-1

      let arr = ['abc', 'bcd', 'cde', 'def'];

      let result = arr.indexOf('bcd', 2); // 返回第二个匹配的元素下标
      console.log(result); // 没有返回-1

includes('bcd') --------------- 判断是否有该匹配元素,返回一个boolean值,用法同indexOf.

find(function(item, index, array) {}, this) ------ 返回第一个匹配的元素或对象

      let arr1 = [
        { name: 'abc' },
        { name: 'bcd' },
        { name: 'cde' },
        { name: 'def' },
        { name: 'efg' }
      ]

      let result2 = arr1.find(item => item.name === 'abc')
      console.log(result2); // {name: 'abc'}
附:归并

reduce() 从数组的第一项开始逐渐遍历到最后
reduceRight() 从数组的最后一项开始逐渐遍历到第一项

都有两个参数,在每一项上调用的函数和 (作为初始值)
他们的函数接受四个参数,前一个值,当前值,项的索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一个项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项

使用reduce()求数组中所有值之和
var value = [1, 2, 3, 4, 5];
var sum = value.reduce((prev, cur, index, array) => prev + cur);

sum // 15
上一篇下一篇

猜你喜欢

热点阅读