按值对数组排序
Sort an array by its values
我有以下数组。
var arr = ["1-5", "3-6", "2-4"];
有没有办法像这样排序:
var arr = ["1-5", "2-4", "3-6"]
我试过 jquery 映射但不能,因为数组的值不是数字。
你可以使用sort函数
按第个排序
arr.sort(function (a, b) {
// a.split('-') - split a string into an array - ['1', '5']
// a.split('-')[0] - get first element - '1'
// "+" converts string to number - 1
// the same for "b"
return +a.split('-')[0] - +b.split('-')[0];
});
按秒排序
arr.sort(function (a, b) {
return +a.split('-')[1] - +b.split('-')[1];
});
您可以试试内置的排序功能arr.sort()
使用数组排序。首先比较第一个数字。如果它们相等,则比较第二个数字..
var arr = ["1-5", "3-6", "2-4"];
var sorted = arr.sort(function(a,b){
var numsA = a.split('-');
var numsB = b.split('-');
if (numsA[0]-numsB[0] !== 0){
return numsA[0] - numsB[0];
}
return numsA[1] - numsB[1];
});
document.write(sorted);
如果按字符串中的第一个数字排序,并且如果第一个数字本身可能为负数,则更可靠的解决方案可能是使用 parseInt
.
var arr = ["1-5", "3-6", "-1-3", "2-4"];
arr.sort(function (a, b) {
return parseInt(a, 10) - parseInt(b, 10);
});
document.body.appendChild(document.createTextNode(JSON.stringify(arr)));
我有以下数组。
var arr = ["1-5", "3-6", "2-4"];
有没有办法像这样排序:
var arr = ["1-5", "2-4", "3-6"]
我试过 jquery 映射但不能,因为数组的值不是数字。
你可以使用sort函数
按第个排序
arr.sort(function (a, b) {
// a.split('-') - split a string into an array - ['1', '5']
// a.split('-')[0] - get first element - '1'
// "+" converts string to number - 1
// the same for "b"
return +a.split('-')[0] - +b.split('-')[0];
});
按秒排序
arr.sort(function (a, b) {
return +a.split('-')[1] - +b.split('-')[1];
});
您可以试试内置的排序功能arr.sort()
使用数组排序。首先比较第一个数字。如果它们相等,则比较第二个数字..
var arr = ["1-5", "3-6", "2-4"];
var sorted = arr.sort(function(a,b){
var numsA = a.split('-');
var numsB = b.split('-');
if (numsA[0]-numsB[0] !== 0){
return numsA[0] - numsB[0];
}
return numsA[1] - numsB[1];
});
document.write(sorted);
如果按字符串中的第一个数字排序,并且如果第一个数字本身可能为负数,则更可靠的解决方案可能是使用 parseInt
.
var arr = ["1-5", "3-6", "-1-3", "2-4"];
arr.sort(function (a, b) {
return parseInt(a, 10) - parseInt(b, 10);
});
document.body.appendChild(document.createTextNode(JSON.stringify(arr)));