我是这个数组:
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/
我希望你能帮助我,对不起我的英语:/
你不需要使用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);
a
已经是数组的项目,而不是它的索引,所以这一行是错误的
var milliA= notifiche_eq[a].split('/');
相反,只是简单
split
数组的项目number
将其转换为+
即
notifiche_eq.sort(function(a, b) {
return +b.split('/')[0] - +a.split('/')[0];
});
你遇到的问题......
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);
你可以在你的代码上做一些奇特的东西,使它看起来很好......就像..
notifiche_eq.sort((a, b) => +b.split('/')[0] - +a.split('/')[0]);
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)
由/
拆分,取第一个元素并使用+
将其转换为数字
var notifiche_eq= ["10/avdvidv", "15/jcbscisb", "7/ciudsu"];
notifiche_eq.sort((a, b) => +b.split('/')[0] - +a.split('/')[0]);
console.log(notifiche_eq);
您可以使用正则表达式来获取字符串的起始数字。
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);