2016-08-03 2 views
0

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

[ [ 'a', 3 ], 
    [ 'c', 3 ], 
    [ 'd', 1 ], 
    [ 'e', 2 ], 
    [ 'f', 1 ], 
    [ 'g', 1 ], 
    [ 'i', 7 ], 
    [ 'l', 3 ], 
    [ 'o', 2 ], 
    [ 'p', 2 ], 
    [ 'r', 2 ], 
    [ 's', 3 ], 
    [ 't', 1 ], 
    [ 'u', 2 ], 
    [ 'x', 1 ] ] 

Я хотел бы отсортировать цифры, чтобы получить по убыванию:

[ [ 'i', 7 ], 
    [ 'a', 3 ], 
    [ 'c', 3 ], 
    [ 'l', 3 ], 
    [ 's', 3 ], 
    [ 'e', 2 ], 
    [ 'o', 2 ] ......] 
+2

Возможный дубликат: http://stackoverflow.com/questions/16096872/how-to-sort-2-dimensional-array-by-column-value –

ответ

-1

First , вы захотите взглянуть на Array.prototype.sort()

Вам нужно написать функцию сравнения, которая сравнивает второе значение каждого элемента массива, а затем сравнивает первое, если t вторых значения равны. Примеры в документации должны быть хорошей отправной точкой.

0

Использование Array.sort ([compareFunction])

function comparator(a, b) {  
    if (a[1] > b[1]) return -1 
    if (a[1] < b[1]) return 1 
    return 0 
} 

myArray = myArray.sort(comparator) 

редактировать для комментариев:

Вот является JSLint показывая его в действии: https://jsfiddle.net/49ed0Lj4/1/

+0

Это приводит к: [['i', 7], ['l', 3], ['s', 3], ['c', 3], ['a', 3], ['e', 2], ['o', 2], [ 'р', 2], [ 'г', 2], [ 'и', 2], [ 'г', 1], [ 'е', 1], [ 'd', 1], ['t', 1], ['x', 1]] – ellier7

+0

Мой плохой, имел < & > вокруг неправильного пути, исправлен. – Usir

0

The sort method in Array

var arr = [ 
    ['a', 3], 
    ['c', 3], 
    ['d', 1], 
    ['e', 2], 
    ['f', 1], 
    ['g', 1], 
    ['i', 7], 
    ['l', 3], 
    ['o', 2], 
    ['p', 2], 
    ['r', 2], 
    ['s', 3], 
    ['t', 1], 
    ['u', 2], 
    ['x', 1] 
]; 

arr.sort(function(a, b) { 
    return b[1] - a[1] 
}) 

Возможно, вам нужно отсортировать как по английским буквам, так и по номеру. Для этого вы можете изменить функцию обратного вызова.

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