中文数组转unicode后排序

let arr = [
    {ch: "我", en: "me"}, 
    {ch: "你", en: "your"},
    {ch: "他", en: "he"},
    {ch: "不不", en: "no"}, 
]
// 转为unicode 编码  
function encodeUnicode(str) {  
     var res = [];  
     for ( var i=0; i<str.length; i++ ) {  
           res[i] = ( "00" + str.charCodeAt(i).toString(16) ).slice(-4);  
     }  
     return "\\u" + res.join("\\u");  
} 
// 转为unicode 编码  如果不带\u
function encodeUnicode(str) {  
     var res = [];  
     for ( var i=0; i<str.length; i++ ) {  
           res[i] = ( "00" + str.charCodeAt(i).toString(16) ).slice(-4);  
     }  
     return res.join("");  
} 

arr.forEach((item) => {
     console.log(encodeUnicode(item.ch)) 
     // \u6211  \u4f60  \u4ed6  \u4e0d\u4e0d
})

let _arr = arr.sort((a,b) => {
     let _a = encodeUnicode(a.ch)
     let _b = encodeUnicode(b.ch)
     return _a.localeCompare(_b)
})
console.log(_arr)  // 中文排序后的数组

let arr2 = arr.sort((a,b) => {
     let _a = a.en
     let _b = b.en
     return _a.localeCompare(_b)
})
console.log(arr2)  // en排序后的数组
// 数字排序:
let _arr = arr.sort((a,b) => a - b )
console.log(_arr)

// 字符串排序:
let _arr = arr.sort((a,b) => {
     return a.localeCompare(b)
})
console.log(_arr)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值