import pyjs from 'js-pinyin'
/**
* 按a~z排序、分组
* @param {Arrary} arr 列表数组
* @param {String} key 排序字段
* @returns {Arrary} 返回结果
*/
function alphabetizeList(arr, key) {
const list = JSON.parse(JSON.stringify(arr))
// 获取值
const getValue = (v, k) => (k ? v[k] : v)
//a~z 排序
list.sort((a, b) => getValue(a, key).localeCompare(getValue(b, key), 'zh'))
// 分组对象
const dict = list.reduce((a, item) => {
const v = getValue(item, key)
// 首字母
const letter = pyjs.getCamelChars(v).substr(0, 1)
if (a[letter]) a[letter].push(item)
else a[letter] = [item]
return a
}, {})
// 分组数组
const letter = Object.keys(dict).sort()
const group = []
letter.forEach(k => group.push({ letter: k, data: dict[k] }))
// 返回结果
return { sort: list, dict, group, letter }
}
城市按拼音字母排序、分组
于 2023-10-08 09:30:48 首次发布