js实现汉字中文排序的方法 例如:省市列表的排序
2018-11-20 16:02
477 查看
js实现汉字中文排序的方法 例如:省市列表的排序
原文地址: http://www.cnblogs.com/weblff/p/9051608.html#undefined
localeCompare()
1.数组内的元素是中文字符串的简单排序
[code]var arr = ['南京', '北京', '上海', '杭州', '深圳']; function sortChinese (arr) { // 参数: 排序的数组 arr.sort(function (item1, item2) { return item1.localeCompare(item2, 'zh-CN'); }) } sortChinese(arr) console.log(arr); // ["北京", "杭州", "南京", "上海", "深圳"]
2.数组内的元素是对象,以对象某一个属性进行排序
[code]var arr = [ {name: '南京', code: '09', info: {province: '江苏'}}, {name: '北京', code: '01', info: {province: '北京'}}, {name: '上海', code: '02', info: {province: '上海'}}, {name: '深圳', code: '05', info: {province: '广东'}} ]; function sortChinese (arr, dataLeven) { // 参数:arr 排序的数组; dataLeven 数组内的需要比较的元素属性 /* 获取数组元素内需要比较的值 */ function getValue (option) { // 参数: option 数组元素 if (!dataLeven) return option var data = option dataLeven.split('.').filter(function (item) { data = data[item] }) return data + '' } arr.sort(function (item1, item2) { return getValue(item1).localeCompare(getValue(item2), 'zh-CN'); }) } sortChinese(arr, 'name') // 例如:比较的是name,传入的就是 'name' console.log(arr); /*[{name: '北京', code: '01', info: {province: '北京'}}, {name: '南京', code: '09', info: {province: '江苏'}}, {name: '上海', code: '02', info: {province: '上海'}}, {name: '深圳', code: '05', info: {province: '广东'}}]*/ sortChinese(arr, 'info.province') // 例如:比较的是数组元素属性info内的province属性,传入的就是 'info.province' console.log(arr); /* [{name: '北京', code: '01', info: {province: '北京'}}, {name: '深圳', code: '05', info: {province: '广东'}}, {name: '南京', code: '09', info: {province: '江苏'}}, {name: '上海', code: '02', info: {province: '上海'}}]*/
3.对国内的所有省份进行排序,并且首字母相同的第一个添加首字母
View Code
[code]function chineseLetter (arr, dataLeven) { var letter = 'abcdefghjklmnopqrstwxyz'.split('') var zh = "阿八嚓哒妸发旮哈讥咔垃痳拏噢妑七呥扨它穵夕丫帀".split('') /* 获取数组元素比较的值 */ function getValue (option) { if (!dataLeven) return option var data = option dataLeven.split('.').filter(function (item) { data = data[item] }) return data + '' } /* 进行排序 */ arr.sort(function (item1, item2) { return getValue(item1).localeCompare(getValue(item2), 'zh-Hans-CN') }) /* 判断需要排序的字符串是否含有中文字符 */ if (/[\u4e00-\u9fff]/.test(getValue(arr[0])) && typeof arr[0] === 'object') pySegSort(0, 0) /* 给省列表中添加首字符 */ function pySegSort (letterIndex, zhIndex) { var first = true // 首次是否加 字母标识 for (var i = zhIndex; i < arr.length; i++) { var item = arr[i] // 是否有值 && 当前值大于等于本次字母的最小值 && (最后一位 || 当前值小于下次字母的最小值) var state = zh[letterIndex] && getValue(item).localeCompare(zh[letterIndex], 'zh') >= 0 && (letterIndex === letter.length - 1 || getValue(item).localeCompare(zh[letterIndex+1], 'zh') < 0) if (state) { // 满足条件,同一个首字母下的:例如 A 下的所有省份 if (first) { //是否是第一次出现 item.letter = letter[letterIndex].toUpperCase() first = false } else { item.letter = '' } } else { // 递归调用 函数,进行下次字母下的排列 letterIndex++ if (letterIndex < letter.length) { pySegSort(letterIndex, i) break } } } } } chineseLetter(provinceList, 'value') console.log(provinceList)阅读更多
相关文章推荐
- JS实现中文汉字按拼音排序的方法
- vue.js或js实现中文A-Z排序的方法
- JS排序:localeCompare() 方法实现中文排序、sort方法实现数字英文混合排序
- js实现汉字排序的方法
- angular.js实现列表orderby排序的方法
- js实现汉字排序的方法
- mysql支持中文汉字排序的实现方法
- 让MySQL支持中文排序的实现方法
- JavaScript(JS)实现省市联动选择下拉列表
- python实现忽略大小写对字符串列表排序的方法
- 各种排序方法的JS实现
- 数据结构中的各种排序方法-JS实现
- java实现中文汉字的首字母排序
- 数据结构中的各种排序方法-JS实现
- JS中使用sort结合localeCompare实现中文排序实例
- java实现中文汉字按首字母排序
- java实现中文汉字的首字母排序
- Slip.js – 在触摸屏上实现列表的滑动排序功能
- Hibernate 实现Oracle的中文汉字按照拼音排序 之延续,通用的查询排序能力。
- 数据结构中的各种排序方法-JS实现