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