为什么选择 Lodash ?
Lodash 通过降低 array、number、objects、string 等等的使用难度从而让 JavaScript 变得更简单。 Lodash 的模块化方法 非常适用于:
- 遍历 array、object 和 string
- 对值进行操作和检测
- 创建符合功能的函数
数组
-
chunk
desc: 将一个数组切分成成多个子数组并重新组成一个新数组(即二维数组),例如[1,2,3,4,5] ==> [[1,2],[3,4,5]],如果
array无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块。impact: 不改变原数组,将返回新数组
ex:
import chunk from 'lodash/chunk'; let array = ['a', 'b', 'c', 'd'] let arrayChange = chunk(array, 2) conosle.log(arrayChange) // [['a', 'b'], ['c', 'd']] conosle.log(array) // ['a', 'b', 'c', 'd']application:
-
compact
desc: 将原数组中的
假值进行过滤,例如false,null,0,"",undefined, 和NaN都是被认为是“假值”。impact: 不改变原数组,返回新数组
ex:
import compact from 'lodash/compact'; let array = ['a', 0, false, null, undefined, NaN, 'b'] let arrayChange = compact(array) conosle.log(arrayChange) // ['a', 'b'] conosle.log(array) // ['a', 0, false, null, undefined, NaN, 'b'] -
concat
desc:将一个数组与其他数组或则值添加到一起形成一个新的数组,
tips:多维数组在连接时只能展开一层。 impact:不改变原数组,返回新数组 ex:import concat from 'lodash/concat'; let array = ['a'] let arrayChange = concat(array, 'b', ['c'], [['d'],['e']]) conosle.log(arrayChange) // ['a', 'b', 'c', ['d'], ['e']] conosle.log(array) // ['a'] -
difference
desc: 有两个数组A,B, 取出A中A有但B没有的元素;即过滤出A数组中不包含B数组中的元素。其中元素的返回顺序由A数组原有顺序决定。
tips:不能比较数组元素为引用对象的情况,请参考diffrenceBy。 impact:原数组不改变,返回一个新数组。 ex:import difference from 'lodash/difference'; let array = ['a','b', 'c', 'd'] let arrayChange = difference(array, ['a','d', 'e']) conosle.log(arrayChange) // ['b', 'c'] conosle.log(array) // ['a', 'b', 'c', 'd'] -
diffrenceBy
desc: 相比于difference, 该方法多了一个迭代器
iteratee,改迭代器会将两比较的数组分别放进迭代器处理后,以处理后的数组进行比较,但是返回的元素是未处理时的原数组的值。tips:该迭代器类型可为Array|Function|Object|string)ex:
import difference from 'lodash/diffrenceBy'; let array = [{ 'x': 2 }, { 'x': 1 }] let arrayChange = diffrenceBy(array, [{ 'x': 1 }], 'x') // 将两数组的x变量的值分别取出再单独比较 conosle.log(arrayChange) // [{ 'x': 2 }] conosle.log(array) // [{ 'x': 2 }, { 'x': 1 }]