var temp=["dy34","fd","FD","av","AV","12esu",1,"DY34",1011,123,101];
当我对数组进行排序时,我得到的是:
result = [1,101,123,1011,"12esu","AV","av","dy34","DY34","FD","fd"]
但我需要这样的结果:
result = [1,101,123,1011,"12esu","AV","av","DY34","dy34","FD","fd"]
答案 0 :(得分:2)
似乎你想要
/* isNumeric function taken from http://stackoverflow.com/a/1830844/1529630 */
var isNumeric = n => !isNaN(parseFloat(n)) && isFinite(n),
numberForm = val => isNumeric(val) ? Number(val) : Infinity,
iStringForm = val => String(val).toUpperCase();
var temp = ["dy34","fd","FD","av","AV","12esu",1,"DY34",1011,123,101];
for (var i = 0; i < temp.length; ++i)
temp[i] = [numberForm(temp[i]), iStringForm(temp[i]), temp[i]];
temp.sort(function(a, b) {
for (var i = 0; i < 3; ++i) {
if (a[i] < b[i]) return -1;
if (a[i] > b[i]) return +1;
}
return 0;
});
for (var i = 0; i < temp.length; ++i)
temp[i] = temp[i][2];
console.log(temp);
&#13;