介绍
k8w-extend-native
是一个原生JS的扩展库,封装了开发中常用的一些方法,主要包含了对数据、对象、日期的操作等。
https://github.com/k8w/k8w-extend-native
引入方法
从npm下载该库:
npm i k8w-extend-native
在代码入口点引入一次即可:
import 'k8w-extend-native'
本库事实上包含了若干子库,包括:
k8w-linq-array
常用的数组操作k8w-super-date
常用的日期操作k8w-super-object
常用的对象操作
以下仅罗列一些最常用且重要的方法,如果你感兴趣,可以自行进入node_modules
,查阅index.d.ts
,有完整的方法定义。
k8w-linq-array
(相当于 C# LINQ
的 TS版本)
查找类场景
- 查找一个:find / findIndex / findLast / findLastIndex
- 查找一堆:filter / filterIndex
- first / last
let arr = [
{value: 0},
{value: 1},
{value: 2},
...
{value: 10}
]
// 查找一个arr.find(v => v % 4 == 1); // { value: 1 }
arr.findIndex(v => v % 4 == 1); // 1
arr.findLast(v => v % 4 == 1); // { value: 9 }
arr.findLastIndex(v => v % 4 ==1); // 9
// 查找一堆
arr.filter(v => v % 4 == 1); // [{value: 1}, {value: 5}, {value: 9}]
arr.filterIndex(v => v % 4 == 1); // []1, 5, 9]
arr.first(); // {value: 0}
arr.last(); // {value: 10}
排序类场景
- orderBy / orderByDesc 支持多字段排序哟
- distinct
// 按Value1正序(从小到大), 如果Value1相同,则按Value2排序
arr.orderBy(v => v.value1, v=>v.value2);
// 按Value1、Value2倒序
arr.orderByDesc(v => v.value1, v => v.value2)
// 去除数组中重复的项
arr.distinct();
统计类场景
- count
- 统计计算:min / max / sum / average
- 分组统计:groupBy
arr.count(v => v.value > 5);
arr.min(v=>v.value);
arr.max(v=>v.value);
arr.sum(v=>v.value);
arr.average(v=>v.value);
arr = [
{name: 'A', value: 1},
{name: 'B', value: 2},
{name: 'A', value: 3}
]
arr.groupBy(v=>v.A); // [
[1, 3], //key==A
[2] //key==B
]
arr.groupBy(v=>v.A).map(v=>({
name: v.key,
sum: v.sum()
})) // [{name: 'A', sum: 3}, {name: 'B', sum: 2}]
性能类场景
- binarySearch 二分查找(同find)
- binaryInsert (二分插入)
- binaryDistinct (二分去重,同distinct)
其它
- remove / removeOne (从左往右,删除数组中的项,同find)
k8w-super-date
- new Date().format('yyyy-MM-dd hh:mm:ss SSS') 日期格式化
- Date.today() 获取“今天”的时间戳(本地时区)
k8w-super-object
- Object.merge 同 Object.assign 但是是深拷贝
- 其它不是太常用 不赘述
练手问题
QuizRound数组,查询玩的天数最多的人
interface QuizRound {
startTime: number; // 玩的时间
name: string; // 姓名
}
let rounds: QuizRound[] = [
{
"startTime": 1525140000000,
"name": "MC"
},
{
"startTime": 1525147200000,
"name": "MC"
},
{
"startTime": 1525237200000,
"name": "MC"
},
{
"startTime": 1525240800000,
"name": "MC"
},
{
"startTime": 1525140000000,
"name": "帅"
},
{
"startTime": 1525147200000,
"name": "帅"
},
{
"startTime": 1525312800000,
"name": "帅"
},
{
"startTime": 1525226400000,
"name": "凯"
},
{
"startTime": 1525312800000,
"name": "凯"
},
{
"startTime": 1525399200000,
"name": "凯"
},
{
"startTime": 1525312800000,
"name": "晨"
},
{
"startTime": 1525399200000,
"name": "晨"
}
];
(正文完)