数组
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]