zoukankan      html  css  js  c++  java
  • 数组循环常用几种方法

    // map filter some forEach every find findIndex  reduce
    
    let arr = [7,4,5,6,2]
    //返回一个新数组, 长度不变。[7, 4, 5, 6, false]
    let a0 = arr.map( v => v > 3 && v)
    
    //返回一个新数组, 长度会改变  [7, 6]
    let a1 = arr.filter( v => v > 5)
    
    //返回true和false 找到符合条件就会直接跳出循环 
    let a2 = arr.some( v => v > 8)
    
    //返回true和false 所有条件满足才能返回true
    let a3 = arr.every( v => v > 1)  //true
    
    // let a4 = arr.forEach( v => console.log(v) )
    
    let findArr = [{name: 1, id: 1}, {name: 2, id: 2}, {name: 3, id: 3}]
    //返回true 停止循环体 会把当前的值返回  {name: 2, id: 2}
    const a4 = findArr.find( v => v.id === 2 )
    
    // 返回下标 停止循环体
    let a5 = findArr.findIndex( v => v.id === 2 )
    // [{name: 1, id: 1},{name: 3, id: 3}]
    findArr.splice(a5, 1)   //改变原数组
    
    // console.log(a3)
    
    let arr1 = [1, 2, 4];
    //arr.reduce( 函数(必须有return), [默认值])
    //count -> 1    value -> 2  第一次循环   count 默认不写, 那就是 arr1的第一个元素也就是1
    //count -> 3    value -> 4  第二次循环   count是 1 + 2 的返回值 也就是3 
    let a6 = arr1.reduce( (count, value, key, arry) => {
        // console.log(count); // 结果依次为1,3
        // console.log(value); // 结果依次为1,2,4
        // console.log(key); // 结果依次为0,1,2
        // console.log(arry) // 三次结果都为[1,2,4]
        return count + value;
    });
    // console.log(arr1); // 结果为[ 1, 2, 4 ]
    // console.log(a6) // 结果为7
    
    // 代码解读:reduce的不同之处在于累加,和其他几个内置方法不同的地方,它的第二个参数不是this对象,
    // 而是初始累加值(如果不设置的话数组会乱掉),而且回调函数的的个数也不同,比其他的多了一个,
    
    
    let arr2 = [1,3,1,7,5] //统计数组中的数字, 出现了几次。
    
    let sum = arr2.reduce( (obj, value) => {
      if(obj[value]){
        obj[value].push(value)
      }else{
        obj[value] = [value]
      }
      return obj
    },{})
    console.log(sum);
    /*
    { Array(2), 3: Array(1), 5: Array(1), 7: Array(1) }
    1: (2) [1, 1]
    3: [3]
    5: [5]
    7: [7]
    */
    

      

  • 相关阅读:
    java.lang.NoSuchMethodError:antlr.collections.AST.getLine() I
    T7 java Web day01 标签HTML
    T6 s1 day19
    T5 s5 Day18
    T5 s4 Day 17
    T5 s3 day16
    T5 s2 Day 15
    T5 s1 day14
    T4 S03 day 12
    T4 S01 day1
  • 原文地址:https://www.cnblogs.com/yetiezhu/p/12878181.html
Copyright © 2011-2022 走看看