Skip to content

Latest commit

 

History

History
40 lines (26 loc) · 1.7 KB

map.md

File metadata and controls

40 lines (26 loc) · 1.7 KB

lodash源码分析之map的实现

宗教与哲学的分野,一个是信仰,一个是怀疑。宗教,稍有怀疑,就被视为异端。

——木心《文学回忆录》

本文为读 lodash 源码的第十五篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash

gitbook也会同步仓库的更新,gitbook地址:pocket-lodash

源码分析

function map(array, iteratee) {
  let index = -1
  const length = array == null ? 0 : array.length
  const result = new Array(length)

  while (++index < length) {
    result[index] = iteratee(array[index], index, array)
  }
  return result
}

lodashmap 函数实现很简单,了解 map 用法的应该不难理解。

map 用来实现映射,返回新的数组长度应该跟原数组长度一致,因此一开始就先拿到原数组的 length 属性,创建一个跟原数组长度一致的空数组。

接着遍历,将数组中的每项依次取出,作为第一个参数传递给 iteratee 处理函数。iteratee 的第二个参数为当前项的索引,第三个参数为原数组。然后将 iteratee 返回的结果放入新数组 result 中。

遍历完毕后,将新的数组返回,即实现了 map 函数。

License

署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)

最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:

作者:对角另一面