array
fillArray
以任意长度值填充数组
signature:
ts
function fillArray<T>(value: T, length: number): T[];
example:
ts
fillArray(1, 4); // [1,1,1,1]
sortArrayByField
对象数组根据指定字段排序。如果元素中不存在指定字段,则该元素会被排列在最后。
signature:
ts
function sortArrayByField<T>(arr: T[], field: keyof T, ascending = true): T[];
example:
ts
const items = [{ id: 2 }, { id: 3 }, { id: 1 }];
sortArrayByField(items, 'id'); // [{ id: 1 }, { id: 2 }, { id: 3 }]s
const names = [{ name: 'John' }, { name: 'Alice' }, { name: 'Bob' }];
sortArrayByField(names, 'name', false); // [{ name: 'Alice' }, { name: 'Bob' }, { name: 'John' }]
groupBy
对象数组排序。iterate可以是对象的key也可以是自定义函数
ts
function groupBy<T, K extends keyof T | ((item: T) => string | number | boolean)>(
arr: T[],
iterate?: K,
): Record<string, T[]>;
example
ts
type Person = { name: string; age: number; gender: string };
const people: Person[] = [
{ name: 'Alice', age: 30, gender: 'female' },
{ name: 'Bob', age: 30, gender: 'male' },
{ name: 'Charlie', age: 25, gender: 'male' },
{ name: 'David', age: 25, gender: 'male' },
{ name: 'Eve', age: 35, gender: 'female' },
];
groupBy(people, 'age');
// output
'30': [
{ name: 'Alice', age: 30, gender: 'female' },
{ name: 'Bob', age: 30, gender: 'male' },
],
'25': [
{ name: 'Charlie', age: 25, gender: 'male' },
{ name: 'David', age: 25, gender: 'male' },
],
'35': [{ name: 'Eve', age: 35, gender: 'female' }],
}
const numbers = [1, 2, 3, 4, 5, 6];
const groupedByEvenOdd = arr.groupBy(numbers, (num) => (num % 2 === 0 ? 'even' : 'odd'));
// output
{
odd: [1, 3, 5],
even: [2, 4, 6],
}
reverse
反转数组,返回新数组,不会改变原数组
signature:
ts
function reverse<T>(arr: T[]): T[];
example:
ts
const arr = [1, 2, 3, 4, 5];
reverse(arr); // [5, 4, 3, 2, 1]