循环遍历数组的时候,你还在用for语句走天下吗?python
我曾经就是for走天下,最后发现本身给本身挖了一个巨大的坑,层层嵌套的循环,总要花大量的时间去捋清各类逻辑关系,很容易逻辑混乱。终于你通过千辛万苦把逻辑捋清了,实现了功能需求。但是这时候接踵而来的问题来了?性能,扩展性,重用性....等等,合着我费了九牛二虎之力白费了。这时候一把鼻涕一把泪,尽是辛酸;数组
这时候某人说,有不少好用的API,你为何不去用呢?此刻恍然大悟。浏览器
Array.prototype.forEach() : 方法对数组的每一个元素执行一次提供的函数。函数
array.forEach(callback(currentValue, index, array){ //do something }, this)
参数
callback:为数组中每一个元素执行的函数,该函数接收三个参数:性能
currentValue(当前值):数组中正在处理的当前元素。测试
index(索引): 数组中正在处理的当前元素的索引。this
array: forEach()方法正在操做的数组。spa
thisArg可选:可选参数。当执行回调 函数时用做this的值(参考对象)。prototype
返回值:undefined.调试
Array.prototype.filter(): 方法建立一个新数组, 其包含经过所提供函数实现的测试的全部元素。
const new_array = arr.filter(callback[, thisArg])
callback :用来测试数组的每一个元素的函数。调用时使用参数 (element, index, array)。返回true表示保留该元素(经过测试),false则不保留。
thisArg : 可选。执行 callback 时的用于 this 的值。
返回值: 一个新的经过测试的元素的集合的数组
Array.prototype.map(): 建立一个新数组,其结果是该数组中的每一个元素都调用一个提供的函数后返回的结果。
let new_array = arr.map(function callback(currentValue, index, array) { // Return element for new_array }[, thisArg])
callback : 生成新数组元素的函数,使用三个参数:
currentValue : callback 的第一个参数,数组中正在处理的当前元素。
index : callback 的第二个参数,数组中正在处理的当前元素的索引。
array: callback 的第三个参数,map 方法被调用的数组。
thisArg:可选的。执行 callback 函数时 使用的this 值。
Array.prototype.every(): 若是数组中的每一个元素都知足测试函数,则返回 true,不然返回 false。
Array.prototype.some(): 若是数组中至少有一个元素知足测试函数,则返回 true,不然返回 false。
<span style='color:rgb(230,3,135);'> 也许明天咱们不在用for走天下,取而替代的是 for of</span>
for...of 语句在可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上建立一个迭代循环,调用自定义迭代钩子,并为每一个不一样属性的值执行语句。
for ( variable of iterable) 迭代Array: let iterable = [10, 20, 30]; for (let value of iterable) { console.log(value+1); }// 11,21,31 迭代String: let iterable = "boo"; for (let value of iterable) { console.log(value); }// a,b,c
variable: 在每次迭代中,将不一样属性的值分配给变量。
iterable:可枚举其枚举属性的对象。
for...of与for...in的区别:
for...in 语句以原始插入顺序迭代对象的可枚举属性。针对object
for...of 语句遍历可迭代对象定义要迭代的数据。对于Array,Map,Set,String,TypedArray,arguments 对象等等
在浏览器中调试一遍效果更佳
对象循环的话目前我知道 for in 是最好的选择啦!用法和 for of 同样
对象是类数组对象,固然咱们也能够把对象转化为数组:
1.Object.keys():返回一个数组,包含指定对象的全部自有可遍历属性的名称
2.类数组转化为数组:Array.prototype.slice.call(arguments)
3.Array.from() :对伪数组或可迭代对象(包括arguments Array,Map,Set,String...)转换成数组对象。
...未完待续