我想要

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);

10-05 18:03
查看更多