迭代器模式的核心就是——提供一种方法使你能够遍历到对象中的每一个元素,并对他们做类似的处理。
说人话就是——常见的数组处理方式。如forEach,map,some,every之类的通常我们用来处理数组方法给他们取个高大上的名字就是迭代器。
在JavaScript中,除了数组之外,普通对象也可以通过for in遍历,因此我们可以写一个通用的迭代器来处理"对象"。
function iterator(obj,fn){
if (Object.prototype.toString.call(obj) === "[object Array]") {
for(let i=0;i<obj.length;i++){
fn.call(null,obj[i],i)
}
}else if(Object.prototype.toString.call(obj)==='[object Object]'){
for(let i in obj){
fn.call(null,obj[i],i)
}
}else{
throw new Error('请传入一个数组或对象')
}
}
iterator([3,6,9],function(val,index){
console.log(val,index)
})
iterator({
'a':'aaa',
'b':'bbb'
},function(val,key){
console.log(val,key)
})