遍历器 for...of 循环
for...of 作为遍历所有数据结构的统一的方法。但不能直接遍历对象,因为没有 Symbol.iterator (遍历器接口)
(所以可用 Object.keys( ) / Object.values( ) 去转一道,转成数组就可以用了。或者给obj [ Symbol.iterator ] = function( ){ ... })
ary.key( ) 拿到数组的下标
value( ) 拿到的是数组的每个值
entries( ) 拿到的是:[ 下标,值 ] 这个样的一个形式的所有的数据。
Object.keys( ) 把对象的 key 值抽取出来放在数组中
Object.values( obj ) 把对象的 value 值抽取出来放在数组中
Object.entries( ) 把key,value都抽出来,存到一个数组中
obj[Symbol.iterator] = function(){ return{ next:function(){ return{ value:传出去的值, done:false 没有遍历完 / ture 遍历完了 } } } }
例子:
let obj = {name:'杰伦',age:18};
obj[Symbol.iterator] = function(){
let index = 0;
let arr = Object.keys(obj);
let len = arr.length;
return {
next(){
if(index < len){
return {
value:{key:arr[index],val:obj[arr[index++]]},
done:false
}
}else{
return {
value:1,
done:true
}
}
}
}
};
for(let {key,val} of obj){
console.log(key,val);
}
不但能循环数组,还能循环 类数组 Set 和 Map 和 arguments 和 lis 数据结构
Set 去除数组重复项 [ ... new Set ( array ) ]
arr.forEach(function(e,i){ //没有返回值 if(i==2){ return // 条件满足就跳过,,,但是不能用break(跳出) } })

浙公网安备 33010602011771号