dataFilter.js
1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
var pinyin = require("chinese-to-pinyin");
/**
* 按拼音第一个字母排序
* @param {需要排序的数据表} arr
* 数据按name字段排序 (需注意)
*/
export function sortArr(arr, renderType) {
if (arr.length) {
let list = [];
for (let i = 0, l = arr.length; i < l; i++) {
let ltr = arr[i][renderType[0]];
let letter = pinyin(ltr, {
noTone: true,
filterChinese: true
}).substr(0, 1).toUpperCase();
if (!/[a-z]/i.test(letter)) letter = '#';
if (!(letter in list)) {
list[letter] = [];
}
list[letter].push(arr[i]);
}
let result = [];
for (var key in list) {
result.push({
letter: key,
list: list[key]
});
}
result.sort(function (x, y) {
return x.letter.charCodeAt(0) - y.letter.charCodeAt(0);
});
if (result.length > 0 && result[0].letter === '#') {
var last_arr = result[0];
result.splice(0, 1);
result.push(last_arr);
}
return result;
} else {
return []
}
}
export function dataFilter(arr, renderType, keywords) {
let ar = [];
for (let i = 0, l = arr.length; i < l; i++) {
let pin = pinyin(arr[i][renderType[0]], {
noTone: true,
filterChinese: true
}).replace(/\s*/g, '');
let key = pinyin(keywords, {
noTone: true,
filterChinese: true
}).replace(/\s*/g, '')
if (pin.toUpperCase().indexOf(key.toUpperCase()) >= 0) {
ar.push(arr[i]);
}
}
return ar;
}