lodash源码分析 --- (pull函数)

2018-07-03  本文已影响0人  shuta

pull函数

我的写法

function pull(array, ...values) {
    let result = []

    console.log(values)
    outer:
    for(val of array) {
        for(let oldVal of values) {
            if (val == oldVal) {
                continue outer
            }   
        }

        result.push(val)

    }

    return result
}

我这个没有改变原数组哈。。。

别人的写法

function basePullAll(array, values, iteratee, comparator) {
  const indexOf = (array, value, fromIndex)  =>{
     let index = fromIndex - 1
     const { length } = array

      while (++index < length) {
        if (array[index] === value) {
          return index
        }
      }
    return -1
  }
  const length = values.length

  let index = -1
  let seen = array

  while (++index < length) {
    let fromIndex = 0
    const computed = values[index]

    while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {
      array.splice(fromIndex, 1)
    }
  }
  return array
}

感想

上一篇 下一篇

猜你喜欢

热点阅读