0.0.3-beta.6 • Published 2 years ago

@rayuse/array v0.0.3-beta.6

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Array

常用的一些关于数组的工具函数。

引用方式

import { arithmeticSequence, ... } from '@rayuse/array'

arithmeticSequence

生成等差数列,参数分别为 数组起始值 步长值 数组长度

/**
 * @param start 最小值
 * @param step 步长值
 * @param len 数组长度
 * @returns 等差数组
 */
arithmeticSequence(0, 2, 5) // [0, 2, 4, 6, 8]
arithmeticSequence(1, 5, 8) // [1, 6, 11, 16, 21, 26, 31, 36]

countOccurrences

统计数组中指定元素出现的次数,只能统计 string | number | boolean | null | undefined 类型的元素

/**
 * @param arr 数组
 * @param val 待统计的元素
 * @returns 出现次数
 */
countOccurrences([1, '', undefined, null, true], '') // 1
countOccurrences([1, '', undefined, null, true, ''], '') // 2
countOccurrences([1, '', undefined, null, true], null) // 1
countOccurrences([1, '', undefined, null, true, true], true) // 2

deepFlatten

  • 扁平化数组,不限层级
/**
 * @param arr 被操作数组
 * @returns 扁平化后的数组
 */
deepFlatten([1, [2, 3], [[4, 5], [6, [7, 8]]]]) // [1,2,3,4,5,6,7,8]
  • 限定层级
/**
 * @param arr 被操作数组
 * @param depth 深度
 * @returns 扁平后的数组
 */
flatten([1, [2, 3], [[4, 5], [6, [7, 8]]]]) // [1, 2, 3,[4, 5], [6, [7, 8]]]
flatten([1, [2, 3], [[4, 5], [6, [7, 8]]]], 2) // [1, 2, 3,4, 5, 6, [7, 8]]
flatten([1, [2, 3], [[4, 5], [6, [7, 8]]]], 3) // [1, 2, 3,4, 5, 6, 7, 8]

indexOfAll

统计目标元素在数组中的全部索引

/**
 * @param arr 数组
 * @param val 目标元素
 * @returns 索引的集合
 */
indexOfAll([1, true, undefined, null, '1', 1, true, undefined, null, '1'], undefined) // [2, 7]
indexOfAll([1, true, undefined, null, '1', 1, true, undefined, null, '1'], 1) // [0, 5]
indexOfAll([1, true, undefined, null, '1', 1, true, undefined, null, '1'], true) // [1, 6]

intersection

数组交集,只能统计 string | number | boolean | null | undefined 类型的元素

/**
 * @param arrA 数组 a
 * @param arrB 数组 b
 * @returns 交集
 */
intersection([1,2,3,4,true], [2,5,true]) // [2, true]

diffrence

数组 A 与数组 B 的差集,不带去重功能

/**
 * @param arrA 数组 a
 * @param arrB 数组 b
 * @returns 差集数组
 */
diffrence([1,2,3], [3,2,1]) // []
diffrence([2,5,2,5], [1]) // [2,5,2,5]
diffrence([2,5,2,5], [2]) // [5,5]

randomIntArrayInRange

获取指定范围、指定长度的随机数组

/**
 * @param min 最小值
 * @param max 最大值
 * @param n 数组长度
 * @returns 数组
 */
randomIntArrayInRange(12, 35, 10) // [ 34, 14, 27, 17, 30, 27, 20, 26, 21, 14 ]

lastArrItem

获取数组最后一个元素

/**
 * 获取数组最后一个元素
 * @param arr 数组
 * @returns 数组最后一个元素
 */
lastArrItem([1,2,3,4,true]) // true
lastArrItem([1,2,3,4,{ aa: 1, bb: 2 }]) // { aa: 1, bb: 2 }

everyNth

数组指定间隔的元素(nth)

/**
 * @param arr 数组
 * @param nth 间隔
 * @returns 结果数组
 */
everyNth([1,2,3,4,5]) // [2, 4]
everyNth([1,2,3,4,5], 3) // [3]
everyNth([1,2,3,4,5], -1) // []

chunkArr

按指定大小分隔数组

chunkArr([1,2,3,4,5], 1) // [[1],[2],[3],[4],[5]]
chunkArr([1,2,3,4,5], 2) // [[1,2], [3,4], [5]]
chunkArr([1,2,3,4,5], 3) // [[1,2,3], [4,5]]

shuffle

打乱数组

shuffle([1,2,3,4,5,6]) // [5,3,4,6,2,1]