Как отсортировать массив в jQuery? - PullRequest
2 голосов
/ 13 июня 2011

Я использую массив для хранения вхождений определенных слов в текст.Формат данных - слово: число.Я хотел бы отсортировать массив по убыванию количества вхождений (т.е. по значению).Есть ли хороший способ сделать это?Или я должен рассмотреть возможность использования другой структуры данных?

// This is how the array is filled.
var matches = ["word1", "word2", "word2", "word3", "word4", "word4", "word4"];  

var count = {};
$.each(matches, function(key, value) {
    if(!count[value])
        count[value] = 1;
    else
        count[value]++;
});

После цикла это то, что я получаю и хочу отсортировать по убыванию значений:

count = { 'word1':'1', 'word2':'2', 'word3':'1', 'word4':'3' };

Что я на самом деле хочу, чтобы этовыглядеть (отсортировано по значению):

count = { 'word4':'3', 'word2':'2', 'word1':'1', 'word3':'1' };

Ответы [ 2 ]

8 голосов
/ 13 июня 2011

Попробуйте это:

function sortmyway(data_A, data_B)
{
    return (data_A - data_B);
}
var list =[ 39, 108, 21, 55, 18, 9]
list.sort(sortmyway) //[9, 18, 21, 39, 55, 108]

См. рабочий пример здесь .

0 голосов
/ 13 июня 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...