Hefty

Results 107 issues of Hefty

本文为读 lodash 源码的第二百九十三篇,后续文章会更新到这个仓库中,欢迎 star:[pocket-lodash](https://github.com/yeyuqiudeng/pocket-lodash) gitbook也会同步仓库的更新,gitbook地址:[pocket-lodash](https://www.gitbook.com/book/yeyuqiudeng/pocket-lodash/details) ## 源码分析 `invertBy` 和 `invert` 的作用类似,不过可以传入一个迭代器 `iteratee` , `iteratee` 接收每次迭代的 `value` ,然后会返回一个新值作为结果的 `key` ,并且 `invertBy` 不像 `invert` ,值只有一个属性,而是有一组属性。 源码如下: ```javascript const hasOwnProperty = Object.prototype.hasOwnProperty function...

系列文章
api

本文为读 lodash 源码的第二百九十二篇,后续文章会更新到这个仓库中,欢迎 star:[pocket-lodash](https://github.com/yeyuqiudeng/pocket-lodash) gitbook也会同步仓库的更新,gitbook地址:[pocket-lodash](https://www.gitbook.com/book/yeyuqiudeng/pocket-lodash/details) ## 源码分析 `invert` 的作用是将对象 `object` 的值作为属性,将属性作为值来得到一个新的对象。如果值有重复,则会根据迭代的顺序,后面的属性会覆盖前面的。 源码如下: ```javascript function invert(object) { const result = {} Object.keys(object).forEach((key) => { let value = object[key] if (value !=...

系列文章
api

本文为读 lodash 源码的第二百九十一篇,后续文章会更新到这个仓库中,欢迎 star:[pocket-lodash](https://github.com/yeyuqiudeng/pocket-lodash) gitbook也会同步仓库的更新,gitbook地址:[pocket-lodash](https://www.gitbook.com/book/yeyuqiudeng/pocket-lodash/details) ## 源码分析 `hasIn` 用来判断 `object` 自身及原型链所有的可枚举属性里是否存在 `key` 。 源码如下: ```javascript function hasIn(object, key) { return object != null && key in Object(object) } ``` 其实就是使用...

系列文章
api

本文为读 lodash 源码的第二百九十篇,后续文章会更新到这个仓库中,欢迎 star:[pocket-lodash](https://github.com/yeyuqiudeng/pocket-lodash) gitbook也会同步仓库的更新,gitbook地址:[pocket-lodash](https://www.gitbook.com/book/yeyuqiudeng/pocket-lodash/details) ## 源码分析 `has` 用来判断 `object` 自身可枚举属性上是否存在 `key` 。 源码如下: ```javascript const hasOwnProperty = Object.prototype.hasOwnProperty function has(object, key) { return object != null && hasOwnProperty.call(object, key)...

系列文章
api

本文为读 lodash 源码的第二百八十九篇,后续文章会更新到这个仓库中,欢迎 star:[pocket-lodash](https://github.com/yeyuqiudeng/pocket-lodash) gitbook也会同步仓库的更新,gitbook地址:[pocket-lodash](https://www.gitbook.com/book/yeyuqiudeng/pocket-lodash/details) ## 源码分析 `functions` 的作用是找出 `object` 中所有值的类型为函数的属性名。 源码如下: ```javascript function functions(object) { if (object == null) { return [] } return Object.keys(object).filter((key) => typeof object[key] ===...

系列文章
api

本文为读 lodash 源码的第二百八十八篇,后续文章会更新到这个仓库中,欢迎 star:[pocket-lodash](https://github.com/yeyuqiudeng/pocket-lodash) gitbook也会同步仓库的更新,gitbook地址:[pocket-lodash](https://www.gitbook.com/book/yeyuqiudeng/pocket-lodash/details) ## 依赖 ```javascript import baseFindKey from './.internal/baseFindKey.js' import baseForOwnRight from './.internal/baseForOwnRight.js' ``` [《lodash源码分析之baseFindKey》](https://github.com/yeyuqiudeng/pocket-lodash/issues/288) [《lodash源码分析之baseForOwnRight》](https://github.com/yeyuqiudeng/pocket-lodash/issues/141) ## 源码分析 `findLastKey` 和 `findKey` 的作用差不多,不过遍历的顺序是从后往前。 源码如下: ```javascript function findLastKey(object, predicate)...

系列文章
api

本文为读 lodash 源码的第二百八十七篇,后续文章会更新到这个仓库中,欢迎 star:[pocket-lodash](https://github.com/yeyuqiudeng/pocket-lodash) gitbook也会同步仓库的更新,gitbook地址:[pocket-lodash](https://www.gitbook.com/book/yeyuqiudeng/pocket-lodash/details) ## 源码分析 `baseFindKey` 和 `findKey` 的作用是一样的,都是找到传入的对象中第一个符合条件的属性。但是 `baseFindKey` 更加低层,它只负责迭代的过程,但不负责迭代方式,迭代方式由传入的 `eachFunc` 负责。 源码如下: ```javascript function baseFindKey(collection, predicate, eachFunc) { let result eachFunc(collection, (value, key, collection) => {...

系列文章
internal

本文为读 lodash 源码的第二百八十六篇,后续文章会更新到这个仓库中,欢迎 star:[pocket-lodash](https://github.com/yeyuqiudeng/pocket-lodash) gitbook也会同步仓库的更新,gitbook地址:[pocket-lodash](https://www.gitbook.com/book/yeyuqiudeng/pocket-lodash/details) ## 源码分析 `findKey` 可以传入一个 `object` 和断言函数 `predicate` ,这个函数的作用跟 `find` 参不多,只不过 `find` 返回的是第一个符合条件的 `value` ,但是 `findkey` 返回的是第一个符合条件的属性 `key` 。 源码如下: ```javascript function findKey(object, predicate) { let...

系列文章
api

本文为读 lodash 源码的第二百八十五篇,后续文章会更新到这个仓库中,欢迎 star:[pocket-lodash](https://github.com/yeyuqiudeng/pocket-lodash) gitbook也会同步仓库的更新,gitbook地址:[pocket-lodash](https://www.gitbook.com/book/yeyuqiudeng/pocket-lodash/details) ## 源码分析 `fromEntries` 的作用是将形如 `[[key1, value1], [key2, value2]]` 的结构转换成 `{key1: value1, key2: value2}` 的结构。 源码如下: ```javascript function fromEntries(pairs) { const result = {} if (pairs...

系列文章
api

本文为读 lodash 源码的第二百八十四篇,后续文章会更新到这个仓库中,欢迎 star:[pocket-lodash](https://github.com/yeyuqiudeng/pocket-lodash) gitbook也会同步仓库的更新,gitbook地址:[pocket-lodash](https://www.gitbook.com/book/yeyuqiudeng/pocket-lodash/details) ## 依赖 ```javascript import customDefaultsMerge from './.internal/customDefaultsMerge.js' import mergeWith from './mergeWith.js' ``` [lodash源码分析之customDefaultsMerge](https://github.com/yeyuqiudeng/pocket-lodash/issues/281) [lodash源码分析之mergeWith](https://github.com/yeyuqiudeng/pocket-lodash/issues/284) ## 源码分析 `defaultsDeep` 的作用和 `default` 类似,不过会深层设置默认值。 源码如下: ```javascript function defaultsDeep(...args) {...

系列文章
api