2014-09-23 2 views
0

вот мой массив, например:рода многомерный массив на первое число

25 test1, 50 test 50, 10 item ten,100 test100 hi,75 seventy five ok, alpha menu item, bravo ok 

Я пытаюсь эту функцию я нашел здесь:

function arraySort(pArray) { 
    pArray.sort(
     function(a,b) { 
      var len=a.length; 
      for (var i=0;i<len;i++) { 
       if (a[i]>b[i]) return 1; 
       else if (a[i]<b[i]) return -1; 
      }   
      return 0; 
     } 
    ); 
} 

Но не получают своего рода право каким-то образом. Простое желание сортировать многомерный массив на первом элементе с номером только. Ну, может быть, персонаж, которого я предполагаю, и если так поставлен.

Благодарим за помощь.

Майк

+0

поэтому необходимо отсортировать массив на основе числа в начале строки, на которую я верю, если это число. –

+0

myArray = [25 test1, 50 test 50, 10 item ten, 100 test100 hi, 75 семьдесят пять ok, альфа-элемент меню, bravo ok]; –

+0

Что делать с 2D-массивом, где первый столбец является номером, а затем сортировать по нему численно, а затем собирать для вывода, вывод - это номер и строка, тогда a \ n для возврата каретки :) –

ответ

0
var yourArray = ['25 test1', '50 test 50', '10 item ten', '100 test100 hi', '75 seventy five ok', 'alpha menu item', 'bravo ok']; 

function arraySort(pArray) { 
    return pArray.sort(function(a, b) { 
     var an = parseInt(a), bn = parseInt(b); 
     return an > bn || isNaN(bn) ? -1 : bn > an || isNaN(an) ? 1 : 0; 
    }); 
} 

// now call arraySort 
var sortedArray = arraySort(yourArray); 
+0

сортирует, но от 100 до 10, так что нисходящий, я желаю самого маленького числа! humm –

+0

Я перевернул оба на

0

Это должно работать: http://jsfiddle.net/xqhtf2z4/

function arraySort(pArray) { 
    pArray.sort(
     function(a,b) { 
      if ((isNaN(a[0]) && isNaN(b[0])) || (!isNaN(a[0]) && !isNaN(b[0]))) { 
       if (a[0] > b[0]) { 
        return 1; 
       } 
       else if (a[0] < b[0]) { 
        return -1; 
       } 
       else { 
        return 0; 
       } 
      } 
      else { 
       if (isNaN(a[0])) { 
        return 1; 
       } 
       else { // isNaN(b[0]) == true 
        return -1; 
       } 
      }  
     } 
    ); 
} 
+0

, поэтому нужно отсортировать массив по числу в начале строки я считаю, что если это число, если альфа просто добавляет к концу массива. Спасибо. –

+0

ok, после сортировки массив не определен. нам нужен обратный pArray в коде? Я все это изучаю. –

+0

Я добавил и теперь возвращает массив, хотя по какой-то причине он не отсортирован правильно. –

0
var arr = ["bravo ok", "alpha menu item", "25 test1", "50 test 50", "10 item ten","100 test100 hi","75 seventy five ok"]; 
arr.sort(function(a,b){return a.localeCompare(b);}) 

выход:

["10 item ten", "100 test100 hi", "25 test1", "50 test 50", "75 seventy five ok", "alpha menu item", "bravo ok"] 

работает нормально для меня.

+0

, так что вам нужно отсортировать массив на основе числа в начале строки, я верю, если это число, если оно альфа просто добавляет к концу массива. Спасибо. –

+0

Надеюсь, ваша проблема решена. – vikas

+0

привет Викасу кажется, что это не сработало, я могу попробовать еще раз. оцените помощь. этот массив - это строки, где первый элемент в строке - это число. понимаете, не знаете, почему так трудно сделать.:) hummm thanks –

Смежные вопросы