我想要
var myArray = [
"some text here, @8 00001#p0030",
"some text here, @6 00001#p0030",
"some text here, @4 00001#p0030",
"some text here, @3 00001#p0030",
"some text here, @1 00001#p0030",
"some text here, @2 00001#p0030",
"some text here, @1 00001#p0030",
"some text here, @1 00001#p0030",
"some text here, @8 00001#p0030",
"some text here, @9 00001#p0030"
];
变成这样的东西
var myArray = [
"some text here, @1 00001#p0030",
"some text here, @1 00001#p0030",
"some text here, @1 00001#p0030",
"some text here, @2 00001#p0030",
"some text here, @3 00001#p0030",
"some text here, @4 00001#p0030",
"some text here, @6 00001#p0030",
"some text here, @8 00001#p0030",
"some text here, @8 00001#p0030",
"some text here, @9 00001#p0030"
];
有没有一种方法可以根据字符串中存在的@number对其进行排序?
最佳答案
你可以试试看
var myArray = [
"some text here, @8 00001#p0030",
"some text here, @6 00001#p0030",
"some text here, @4 00001#p0030",
"some text here, @3 00001#p0030",
"some text here, @1 00001#p0030",
"some text here, @105 00001#p0030",
"some text here, @2 00001#p0030",
"some text here, @11 00001#p0030",
"some text here, @1 00001#p0030",
"some text here, @1 00001#p0030",
"some text here, @8 00001#p0030",
"some text here, @9 00001#p0030"
];
var sorted = myArray.sort(function(a, b) {
var sbr1=a.substr(a.indexOf("@")+1);
var num1=parseInt(sbr1.substr(0,sbr1.indexOf(" ")));
var sbr2=b.substr(b.indexOf("@")+1);
var num2=parseInt(sbr2.substr(0,sbr2.indexOf(" ")));
if (num1 > num2)
return 1;
else if (num1 < num2)
return -1;
return 0;
});
console.log(sorted);