zoukankan      html  css  js  c++  java
  • 3/4 JavaScript 中 数组的迭代方法

    写在前面

      这些都是自己总结的

      ...


    迭代方法

      其实 能够迭代的东西 都可以用这些方法 (应该)

      有以下方法

      every();

      filter();

      forEach();

      map();

      some();

    every() & some()

      顾名思义 every() 就是检查 可迭代对象中 每一项是否满足 传入的函数,如果全部满足 就返回 true 反之 则是 false

      some() 就是如果 可迭代对象 其中有一个满足 传入函数 就返回 true 如果一个都没有 则返回 false

    // every & some
    let test_1 = [1,2,3,4,undefined,5];
    // 当然所有的迭代方法都接受三个参数 数组当前迭代的元素 ,当前的索引值 , 本身数组
    console.log(test_1.every((element,index,array)=>{return (element != undefined ? true:false )})); // false
    // 数组中的元素 是不是都是 “不是undefined” 的
    console.log(test_1.some((element,index,array)=>{return (element != undefined ? true:false )})); // true
    // 数组中的元素 是不是有 “不是undefined” 的

      当然 这两者的用途其实很多...

    forEach()

      forEach 相当于 就是简写的 for-of 写法 ( 个人比较偏向于 forEach )

      当然 还是 接受三个参数

    // forEach
    let thisTest = [1,2,3,4,5,6];
    for (const [key,value] of thisTest.entries()) {
        if(value === 3){
            console.log(key); // 2
        }
    }
    // 这个可以用迭代方法 forEach 来弄 省略了...
    
    // 通过 forEach 将数组中的重复元素去除
    let test_2= [1,2,3,4,5,5,6,5,2,3,4,5,7];
    let tempForTest2 = [];
    test_2.forEach((element,index,array)=>{ 
        if(!tempForTest2.includes(element)){
            tempForTest2.push(element);
        }
     })
    console.log(tempForTest2); // [1,2,3,4,5,6,7]

    filter()

      个人感觉 最好用的还是 filter 当不需要的东西出现的时候 ,我们可以“过滤” 返回一个新的数组

      但是原有的数组不会变

      如果不用了 请设为 null ( 垃圾回收机制 )

    // filter
    let test_3 = [1,2,3,4,undefined,5,undefined];
    let new_test_3 = test_3.filter((element,index,array)=>{
        return (element != undefined ? true:false ) // 去掉所有的 undefined
    })
    console.log(test_3); // [1,2,3,4,undefined,5,undefined]
    console.log(new_test_3); // [1,2,3,4,5]
    
    test_3 = null; // 方便下次回收

    map()

      map 其实就是在原有的基础上 弄出一个新的 数组 // 好像这些方法都是...

    // map
    let test_4 = [1,2,3,4];
    let new_test_4 = test_4.map((element,index,array)=>{return element*2}) // 这个要返回值的
    console.log(test_4); // [1,2,3,4]
    console.log(new_test_4); // [2,4,6,8];

    总结

      只要是可迭代对象都行

      当然 可能会出现一些问题 暂时 还没考虑...

    Let it roll
  • 相关阅读:
    17.10.13
    17.10.12
    17.10.11
    17.10.10
    17.10.05
    17.10.04
    17.10.03
    17.10.02
    17.10.01
    17.9.29
  • 原文地址:https://www.cnblogs.com/WaterMealone/p/14482327.html
Copyright © 2011-2022 走看看