面试-广联达

  1. map和forEach的区别?
    forEach(): 针对每一个元素执行提供的函数(executes a provided function once for each array element)。
    map(): 创建一个新的数组,其中每一个元素由调用数组中的每一个元素执行提供的函数得来(creates a new array with the results of calling a provided function on every element in the calling array)。
    区别:
    forEach()返回值是undefined,不可以链式调用;map()返回新的数组,可以链式调用(arr.map(item=>item*2).filter(item=>item>5))
    没有办法终止或者跳出forEach()循环,除非抛出异常,所以想执行一个数组是否满足什么条件,返回布尔值,可以用一般的for循环实现,或者用Array.every()或者Array.some();
  2. 自己实现map函数

    1
    2
    3
    4
    5
    6
    7
    function myMap(fn){
    var newArr = [];
    for(let i=0;i<this.length;i++){
    newArr.push(fn(this[i],i,this))
    }
    return newArr;
    }
  3. 函数防抖与函数截流

  4. 延伸:自定义实现数组中的方法

    1
    2
    3
    4
    5
    6
    //实现forEach
    function myForEach(fn){
    for(let i=0;i<this.length;i++){
    fn(this[i],i,this)
    }
    }