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
原文地址:https://www.cnblogs.com/WaterMealone/p/14482327.html