Joo*_*ler 3 javascript arrays sorting
我正在尝试对数组进行排序.
EX-
let arr = [{label: "Name 5"}, {label: "Name 3"},{label: "Name 12"}, {label: "Name 10"}, {label: "First Name 5"}, {label: "Apple"}, {label: "Orange"}, {label: "water"}];
let sortedArray = arr.sort(function(a, b){
return a.label.localeCompare(b.label);
});
console.log(sortedArray);Run Code Online (Sandbox Code Playgroud)
当我尝试对它进行排序时,"名称10"首先出现,但"名称3"应该出现.
我也试过这个 -
let sortedArray = arr.sort(function(a, b){
var nameA=a.label.toLowerCase(), nameB=b.label.toLowerCase();
if (nameA < nameB){
return -1;
} //sort string ascending
if (nameA > nameB){
return 1;
}
return 0; //no sorting
});
Run Code Online (Sandbox Code Playgroud)
还有这个 -
Array.prototype.reverse()
String.prototype.localeCompare()
Run Code Online (Sandbox Code Playgroud)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
但仍然没有运气.任何人都可以指出这里有什么不对吗?
您正在排序字符串,默认排序是字典顺序.您正在寻找的是按自然顺序排序.
您可以使用String#localeCompare自然排序选项.
let arr = [{label: "Name 5"}, {label: "Name 3"},{label: "Name 12"}, {label: "Name 10"}, {label: "First Name 5"}, {label: "Apple"}, {label: "Orange"}, {label: "water"}];
arr.sort(function(a, b) {
return a.label.localeCompare(b.label, undefined, { numeric: true, sensitivity: 'base' });
});
console.log(arr);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
704 次 |
| 最近记录: |