Javascript сортировка многомерного массива по порядку номеров - PullRequest
0 голосов
/ 09 ноября 2011

У меня есть двумерный массив, который мне нужно отсортировать численно. Вот образец массива:

   [0]    [1]
    3     320
    55B   250
    26    100
    55A   260
    56    310
    89    420

Мне нужно упорядочить численно по значениям [0]. Значения хранятся в виде строк. Я понял, как сортировать массивы по алфавиту и численно, но не могу понять, как упорядочить этот массив из-за случайных A и B.

Ответы [ 2 ]

4 голосов
/ 09 ноября 2011

Метод parseInt игнорирует любые строковые символы после числа, удаляя буквы A и B.

arr.sort(function(rowA, rowB){
    var a = parseInt(rowA[0], 10);
    var b = parseInt(rowB[0], 10);

    if (a > b)
        return 1;
    else if (a < b)
        return -1;
    return 0;
});
0 голосов
/ 09 ноября 2011

Только для заметки - если эти A и B не имеют ничего общего с сортировкой, чем идти с parseInt, как написал Зак.

Но если его следует использовать в сортировке, вы можете использовать что-то вроде этого:

arr.sort(function(l,r){
  var vl = l[0].split(/(\d+)(\D*)/),
      vr = r[0].split(/(\d+)(\D*)/);

  vl[1] = parseInt(vl[1]);
  vr[1] = parseInt(vr[1]);

  if(vl[1] < vr[1]){
    return -1;
  }else if(vl[1] === vr[1]){
      if(vl[2] < vr[2]) return -1;
      else if(vl[2] === vr[2]) return 0;
      else return 1;
  }else{
      return 1;
  }
}); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...