美文网首页
数组迭代

数组迭代

作者: 他在发呆 | 来源:发表于2017-07-05 12:32 被阅读0次
    • every() 对数组每一项运行给定函数,如果该函数每一项返回true,则返回true。
    • filter() ------------------------------ 返回该函数会返回true的项。
    • forEach() ---------------------------类似于for 没有返回值。
    • map() ------------------------------返回每次函数调用的结果组成数组。
    • some()------------------------------ 如果该函数一项返回true,则返回true。

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

    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
    

    相关文章

      网友评论

          本文标题:数组迭代

          本文链接:https://www.haomeiwen.com/subject/bffqhxtx.html