Skip to content
导航栏

数组

uniqueArray

简单数组去重

typescript
import { uniqueArray } from '@fang-kang/js-utils';

const arr1 = [1,1,1,1 2, 3];

uniqueArray(arr); // [1,2,3]

uniqueArrayByKey

根据 key 数组去重

typescript
import { uniqeArrayByKey } from '@fang-kang/js-utils';

const arr = [
  { id: 1, parentid: 0 },
  { id: 2, parentid: 1 },
  { id: 3, parentid: 1 },
  { id: 3, parentid: 1 },
];

uniqeArrayByKey(arr, 'id');

/**
 * [
  { id: 1, parentid: 0 },
  { id: 2, parentid: 1 },
  { id: 3, parentid: 1 },
];
 *
 */

sortCompare

数组根据 key 排序

typescript
/**
 * 排序
 * arr: 所需排序的数组
 * prop:排序的依据字段
 * order:默认true -> 正序(小 -> 大) / false -> 倒序(大 -> 小)
 */
import { sortCompare } from '@fang-kang/js-utils';

const arr = [
  { order: 1, name: '1' },
  { order: 10, name: '10' },
  { order: 3, name: '3' },
];

const sortArr = sortCompare(arr, order);

/**
 * [
  { order: 1, name: '1' },
  { order: 3, name: '3' },
  { order: 10, name: '10' },
];
 *
 */

getArrayLabelByValue

根据数组和 value 获取数组中的 label,没有返回 undefined

typescript
import { getArrayLabelByValue } from '@fang-kang/js-utils';

/**
 * {
  arr,
  value,
  valueKey = 'value',
  labelKey = 'label',
  defaultValue = undefined,
}
 */

const arr = [
  {
    label: 'Tom',
    value: '1',
  },
  {
    label: 'Lily',
    value: '2',
  },
];

getArrayLabelByValue({ arr, value: '2' }); // Lily

shuffle

洗牌算法随机

typescript
import { shuffle } from '@fang-kang/js-utils';

const arr = [1, 2, 3];

shuffle(arr); // [2,3,1]

compact

去除数组中的无效/无用值

typescript
import { compact } from '@fang-kang/js-utils';

compact([0, 1, false, 2, '', 3, 'a', 'e' * 23, NaN, 's', 34]);

// [ 1, 2, 3, 'a', 's', 34 ]

countOccurrences

检测数值出现次数

typescript
import { countOccurrences } from '@fang-kang/js-utils';

countOccurrences([1, 1, 2, 1, 2, 3], 1); // 3

flatten

指定深度扁平化数组

typescript
import { flatten } from '@fang-kang/js-utils';

flatten([1, [2], 3, 4]); // [1, 2, 3, 4]
flatten([1, [2, [3, [4, 5], 6], 7], 8], 2); // [1, 2, 3, [4, 5], 6, 7, 8]

deepFlatten

递归扁平化数组

typescript
import { deepFlatten } from '@fang-kang/js-utils';

deepFlatten([1, [2], [[3], 4], 5]); // [1,2,3,4,5]

difference

查找两个数组之间的差异

typescript
import { difference } from '@fang-kang/js-utils';

difference([1, 2, 3], [1, 2, 4]); // [3]

indexOfAll

返回数组中某值的所有索引

typescript
import { indexOfAll } from '@fang-kang/js-utils';

indexOfAll([1, 2, 3, 1, 2, 3], 1); // [0,3]
indexOfAll([1, 2, 3], 4); // []

intersection

两数组的交集

typescript
import { intersection } from '@fang-kang/js-utils';

intersection([1, 2, 3], [4, 3, 2]); // [2, 3]

intersectionBy

两数组都符合条件的交集

可用于在对两个数组的每个元素执行了函数之后,返回两个数组中存在的元素列表。

typescript
import { intersectionBy } from '@fang-kang/js-utils';

intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); // [2.1]

intersectionWith

先比较后返回交集

typescript
import { intersectionWith } from '@fang-kang/js-utils';

intersectionWith([1, 1.2, 1.5, 3, 0], [1.9, 3, 0, 3.9], (a, b) => Math.round(a) === Math.round(b)); // [1.5, 3, 0]

Released under the MIT License.