开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情
前沿
第一次听到这个技术的时候是在看视频被提到一次,并且使用了其中的防抖和及节流的封装,当时不以为然,直到刷算法时再次遇到使用lodash封装的方法来解题,于是乎决定来了解一番。
lodash是什么?
-
Lodash是一个一致性、模块化、高性能的 JavaScript 实用工具库。 -
Lodash 遵循 MIT 开源协议发布,并且支持最新的运行环境。 查看各个构件版本的区别并选择一个适合你的版本。 -
问题来了:什么是MIT开源协议?
- MIT是和BSD一样宽范的许可协议,作者只想保留版权,而无任何其他了限制。也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的.
个人比较浅显的认识
- 个人目前的水平理解为这是一个工具库,可以对开发处理开发过程中一些常见的或者繁琐、经典的一些功能,将这些进行封装,用的时候直接开箱即用,对开发效率上提供帮助。
- 比如:数组、集合、函数、语言、数学逻辑功能、对象、
Sep、字符串、一些实用函数、方法、Properties - 当然以上仅仅是将官方的目录给罗列出来而已,深入知识还有待探索
实际运用
算法举例[剑指 Offer 50. 第一个只出现一次的字符]
-
题目
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。 示例 1: 输入:s = "abaccdeff" 输出:'b' 示例 2: 输入:s = "" 输出:' ' 限制:0 <= s 的长度 <= 50000 -
题解
var firstUniqChar = function(s) { const frequency = _.countBy(s); for (const [i, ch] of Array.from(s).entries()) { if (frequency[ch] === 1) { return ch; } } return ' '; }; -
分析
-
_.
countBy方法_.countBy方法创建一个由键组成的对象,这些键是通过运行iteratee的collection的每个元素的结果生成的。每个 key 的对应值是iteratee返回 key 的次数。
//比如var s = "aacb" const frequency = _.countBy(s); console.log(frequency); // {a: 2, c: 1, b: 1}-
Array.from(s)var s = "aacb" const frequency = _.countBy(s); console.log(Array.from(s)); // ['a', 'a', 'c', 'b'] -
//实例 const object1 = { a: 'somestring', b: 42 }; for (const [key, value] of Object.entries(object1)) { console.log(`${key}: ${value}`); } // expected output: // "a: somestring" // "b: 42"
了解这些方法后,该题就很容易得到解决了
-
方法举例
总结
- 目前为止对于
lodash了解还是比较有限,里面的方法的使用需要时间去了解并尝试着使用,确实是一个很不错的库 - 此外引发另一个思考:别人封装好的直接拿来用确实方便,但还是要建立在对当前所引用的有一定了解,里面涉及到的原理该了解还是要了解的,比如这个防抖和节流,算是经典的面试问题了。
- 能否将其中原理讲出来并且代码实现呢?