我是这个阵列:
var notifiche_eq= ["10/avdvidv","15/jcbscisb","7/ciudsu"];
我会输出:
["15/jcbscisb","10/avdvidv","7/ciudsu"]
所以基于每个元素的数字字符。
我尝试了这段代码但不起作用:
var notifiche_eq= ["10/avdvidv","15/jcbscisb","7/ciudsu"];
notifiche_eq.sort(function(a, b) {
var milliA= notifiche_eq[a].split('/');
var milliB= notifiche_eq[b].split('/');
milliA= (milliA[0])+0;
milliB= (milliB[0])+0;
if(milliB- milliA){
return b-a;
}
});
alert(notifiche_eq);
这里有jsfiddle:https://jsfiddle.net/13tLjqc0/8/
我希望你能帮助我,对不起我的英语:/
答案 0 :(得分:1)
按/
拆分,取第一个元素并使用+
将其转换为数字
var notifiche_eq= ["10/avdvidv", "15/jcbscisb", "7/ciudsu"];
notifiche_eq.sort((a, b) => +b.split('/')[0] - +a.split('/')[0]);
console.log(notifiche_eq);
答案 1 :(得分:1)
您无需使用notifiche_eq[a]
。 a
已经是您的项目了。
我优化了您的代码,以便它处理>
,<
和==
var notifiche_eq= ["10/avdvidv","15/jcbscisb","7/ciudsu"];
notifiche_eq.sort(function(a, b) {
return (+a.split('/')[0] > +b.split('/')[0] ? -1 : (+a.split('/')[0] < +b.split('/')[0] ? 1 : 0));
});
console.log(notifiche_eq);
在评论中没有任何三元运算符的版本:
var notifiche_eq= ["10/avdvidv","15/jcbscisb","7/ciudsu"];
notifiche_eq.sort(function(a, b) {
if(+a.split('/')[0] > +b.split('/')[0]) return -1;
else if(+a.split('/')[0] < +b.split('/')[0]) return 1;
else return 0;
});
console.log(notifiche_eq);
答案 2 :(得分:1)
a
已经是数组的项,而非其索引所以此行错误
var milliA= notifiche_eq[a].split('/');
而不仅仅是
split
数组的项目number
+
即
notifiche_eq.sort(function(a, b) {
return +b.split('/')[0] - +a.split('/')[0];
});
答案 3 :(得分:1)
你有问题......
notifiche_eq[a]
和notifiche_eq[b]
应该只是a和b。
var notifiche_eq= ["10/avdvidv","15/jcbscisb","7/ciudsu"];
notifiche_eq = notifiche_eq.sort(function(a, b) {
var milliA= a.split('/');
var milliB= b.split('/');
milliA= +milliA[0];
milliB= +milliB[0];
return milliB - milliA;
});
console.log(notifiche_eq);
&#13;
你可以在你的代码上做一些奇特的事情,使它看起来很好......比如..
notifiche_eq.sort((a, b) => +b.split('/')[0] - +a.split('/')[0]);
答案 4 :(得分:1)
var notifiche_eq = ["10/avdvidv", "15/jcbscisb", "7/ciudsu"];
// es5
notifiche_eq.sort(function (a, b) {
return b.split('/').shift() - a.split('/').shift()
});
// es6
notifiche_eq.sort((a, b) => b.split('/').shift() - a.split('/').shift());
console.log(notifiche_eq)
&#13;
答案 5 :(得分:1)
您可以使用正则表达式来获取字符串的起始数字。
var notifiche_eq = ["10/avdvidv","15/jcbscisb","7/ciudsu"];
notifiche_eq.sort(function (a, b) {
function getValue(s) { return s.match(/^\d+/)[0]; }
return getValue(b) - getValue(a);
});
console.log(notifiche_eq);