我在对数组对象中的非拉丁字符串进行排序时遇到了问题。
我在代码中使用了_.sortBy(object, 'name')
来按名称排序。
这是我的波斯文本数组:
[['id':1,'name':'ب'],['id':2,'name':'ج'],['id':3,'name':'اما']]
排序后输出应该如下所示:
['id':3,'name':'اما'],['id':1,'name':'ب'],['id':2,'name':'ج']
但是它没有给出这个输出。有人对此有想法吗?
我在对数组对象中的非拉丁字符串进行排序时遇到了问题。
我在代码中使用了_.sortBy(object, 'name')
来按名称排序。
这是我的波斯文本数组:
[['id':1,'name':'ب'],['id':2,'name':'ج'],['id':3,'name':'اما']]
['id':3,'name':'اما'],['id':1,'name':'ب'],['id':2,'name':'ج']
首先,您需要更正数组。它的格式无效。
var a = [{'id':1,'name':'ب'},{'id':2,'name':'ج'},{'id':3,'name':'اما'}];
a.sort(function(a, b) {
if (a.name > b.name) {
return true;
}
});
输入: [{'id':1,'name':'ب'},{'id':2,'name':'ج'},{'id':3,'name':'اما'}]
[{'id':3,'name':'اما'},{'id':1,'name':'ب'},{'id':2,'name':'ج'}]
String#codePointAt
来获取一个字符的 Unicode 值。arr.sort((a, b) => a.name.codePointAt(0) - b.name.codePointAt(0))
var arr = [{
'id': 1,
'name': 'ب'
}, {
'id': 2,
'name': 'ج'
}, {
'id': 3,
'name': 'اما'
}];
var sortedArr = arr.sort((a, b) => a.name.codePointAt(0) - b.name.codePointAt(0));
document.body.innerHTML = '<pre>' + JSON.stringify(sortedArr, 0, 4);
var arr = [{'id':1,'name':'ب'},{'id':2,'name':'ج'},{'id':3,'name':'اما'}];
arr.sort(function(first, second ) {
return first.name.localeCompare(second.name);
});