Сортировать массив строк на основе @number в содержимом строки - PullRequest
0 голосов
/ 19 апреля 2020

Я хочу

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, присутствующего в строке?

1 Ответ

1 голос
/ 19 апреля 2020

U можете попробовать это

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...