lodash在ts中使用的常用的数组方法

98 阅读2分钟

“我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第1篇文章,[点击查看活动详情] (s.juejin.cn/ds/jooSN7t "s.juejin.cn/ds/jooSN7t"…

lodash相关用法

import _ from "lodash";

1.将数组切割成不同长度的数组

/**
 * @param array 需要处理的数组
 * @param size 每个数组的长度
 * @return 新数组
 */
const chunk = (array: Array<any>, size: number): Array<any> => {
    return _.chunk(array, size);
}; 

2.过滤数组中的'假值' NaN,false, null,0, "", undefined

/**
 * @param array
 * @return 过滤掉假值的新数组
 */
const compact = (array: Array<any>): Array<any> => {
    return _.compact(array);
};

3.数组拼接

/**
 * @param array 被拼接的数组
 * @param values (...) 拼接的值,number,string,array
 * @return 连接后的新数组
 */
const concat = (array: Array<any>, values: number | string | Array<any>): Array<any> => {
    return _.concat(array, values);
};

4.数组去重(创建一个新数组,这个数组中的值为array中不需要的值的展示)

/**
 * @param array 要检查的数组。
 * @param values 排除的值。
 * @return 返回一个过滤值后的新数组。
 */
const difference = (array: Array<any>, values: Array<any>): Array<any> => {
    return _.difference(array, values);
};

5.数组对象去重

/**
 * @param array 要检查的数组。
 * @param values 排除的值。
 * @param comparator 调用每个元素。
 * @return 返回一个过滤值后的新数组。
 */
const differenceWith = (array: Array<any>, values: Array<any>, fn: any): Array<any> => {
    return _.differenceWith(array, values, lodash.isEqual);
};

6.去掉数组前面第n个元素

/**
 * @param array 要查询的数组。
 * @param n 要去除的元素个数(默认1)。
 * @return 返回数组剩余的。
 */
const drop = (array: Array<any>, n: number): Array<any> => {
    return _.drop(array, n);
};

7.去掉数组后面第n个元素

/**
 * @param array 要查询的数组。
 * @param n 要去除的元素个数(默认1)。
 * @return 返回数组剩余的。
 */
const dropRight = (array: Array<any>, n: number): Array<any> => {
    return _.dropRight(array, n);
};

8.N次循环

/**
 * @param value 次数
 * @param fn 函数
 * @return 调用结果的数组
 */
const times = (value: number, fn: any): Array<any> => {
    return _.times(value, fn);
};

9.将array递归为一维数组。

/**
 * @param array 需要处理的数组。
 * @return 返回一个的新一维数组。
 */
const flattenDeep = (array: Array<any>): Array<any> => {
    return _.flattenDeep(array);
};

10.根据 depth 递归减少 array 的嵌套层级

/**
 * @param array 需要减少嵌套层级的数组。
 * @param depth 最多减少的嵌套层级数。
 * @return 返回减少嵌套层级后的新数组。
 */
const flattenDepth = (array: Array<any>, depth: number): Array<any> => {
    return _.flattenDepth(array, depth);
};

11.获取array中的最后一个元素。

/**
 * @param array 要检索的数组。
 * @return 返回array中的最后一个元素
 */
const last = (array: Array<any>): string | number => {
    return _.last(array);
};

12.获取数组 array 的第一个元素。

/**
 * @param array 要检索的数组。
 * @return 返回数组 array的第一个元素。
 */
const head = (array: Array<any>): string | number => {
    return _.head(array);
};

13.数组并集

/**
 * @param [arrays]  *(...Array)* : 要检查的数组。
 * @return 返回一个新的联合数组。
 */
const union = (array: Array<any>): string | number => {
    return _.union(array);
};

14.数组key,value值的匹对

/**
 * @param props  属性标识符(属性名)。
 * @param values 值作为相应的属性值。
 * @return 返回一个新的对象。
 */
const zipObject = (array: props<any>, values: Array<any>): string | number => {
    return _.zipObject(props, values);
};

_.zipObject(['a', 'b'], [1, 2]);
// => { 'a': 1, 'b': 2 }

export default <ArrayInterface>{
    chunk,
    compact,
    concat,
    difference,
    differenceWith,
    drop,
    dropRight,
    times,
    flattenDeep,
    flattenDepth,
    last,
    head,
    union,
    zipObject
};