var arr = [1,2,3,[4,[5,[6]]]];
//console.log(arr.length);
//自己实现一个each方法,遍历多维数据
Array.prototype.each = function(fn){
try{
//目的:遍历数据的每一项,计数器,记录当前遍历元素的位置
this.i || (this.i=0); //var i=0;
//严谨判断,什么时候去走each核心方法
//1,当数据的元素大于0 && 传递的参数必须为函数
if (this.length > 0 && fn.constructor == Function) {
//循环遍历数据的每一项
while(this.i < this.length){
//获取数组的每一项
var e = this[this.i];
//如果当前元素都获取到了,并且当前元素是一个数组
if (e && e.constructor == Array) {
//直接传值操作
e.each(fn);
}else{
//如果不是数组,那就是一个单个元素
//这的目的就是把数组的当前元素传递给fn函数,并让函数执行
//fn.apply(e,[e])
fn.call(e,e);
}
this.i++;
}
//释放内存,垃圾回收机制回收变量
this.i = null;
}
}
catch(ex){
}
return this;
}
arr.each(function(item){
console.log(item);
});
自定义方法,模仿each遍历多维数组
最新推荐文章于 2022-08-11 15:15:10 发布