Сортировка Javascript Массив с функцией разделения - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть массив, который выглядит следующим образом

var testArray = ['name1:13', 'name2:15', 'name3:13'];

Я хотел бы отсортировать массив по номеру справа от двоеточия.

Пока у меня есть это:

var converted = testArray.map(
            function (item) {
                return item.split(':').map(
            function (num) {
                return parseInt(num);
          });
        })

        alert(converted)
        var sorted = converted.sort(function (a, b) { return a[1] - b[1] })
        alert(sorted);

Это сортирует их в правильном порядке, но я не уверен, как передать первую часть каждой строки, часть слева от двоеточия.

Сейчас это возвращает: NAN, 13, NAN, 13, NAN, 15

Ответы [ 3 ]

5 голосов
/ 17 февраля 2020

Создайте вспомогательную функцию для доступа к [1] -ому индексу результата разделения, затем в обратном вызове сортировки вызовите эту функцию для обоих и верните разницу:

var testArray = ['name1:13', 'name2:15', 'name3:13'];
const getVal = str => str.split(':')[1];
testArray.sort((a, b) => getVal(a) - getVal(b));
console.log(testArray);
0 голосов
/ 17 февраля 2020

var testArray = ['name1:13', 'name2:15', 'name3:13'];
console.log(testArray.sort((a, b) => (a.split(":")[1] > b.split(":")[1]) ? 1 : -1))
0 голосов
/ 17 февраля 2020

Разделить, преобразовать в число и сравнить.

var testArray = ["name1:13", "name2:15", "name3:13"];

const sortFunction = (a, b) => {
  const value = str => Number(str.split(":")[1]);
  return value(a) - value(b);
};

testArray.sort(sortFunction);

console.log(testArray);
...