编写一个适用于数组和对象的forEach遍历方法

2017-12-02  本文已影响11人  以手画圆心

首先要明确以下几点:
(1)只有一个forEach函数,所有要判断是数组还是对象,利用instanceof;
(2)遍历数组方法用forEach,遍历数组所有元素;
(3)遍历对象用for...in;
(4)要判断属性是否是obj原有属性,而不是通过继承得到的。
具体实现代码如下:

//forEach传入两个参数,obj,要执行的函数fn
function forEach(obj,fn){
        //判断obj是否属于数组
        if(obj instanceof Array){
           //数组的forEach遍历方法,item代表成员,index代表成员在数组位置
            obj.forEach(function(item,index){
                fn(index,item);
            })
        }else{
            //对象for...in遍历方法
            for (key in obj){
                //obj.hasOwnProperty(key)判断属性key是否是obj自己的属性,而不是继承的属性
                if(obj.hasOwnProperty(key)){
                    fn(key,obj[key]);
                }
            }
        }
    }

    var arr = [1,2,3];
    forEach(arr,function(index,item){
        console.log(index,item);
    });
//0 1
//1 2
//2 3

    var obj = {
        x:100,
        y:200
    }
    forEach(obj,function(key,val){
        console.log(key,val);
    })
//x 100
//y 200
上一篇 下一篇

猜你喜欢

热点阅读