2015-11-08 5 views
0

сгенерировать массив подстрок с заданной строки и длины подстроки, используя этот код:Сортировка Substring массива по их частотам - JS

function NthFrequencyCount(string,length){ 

    var frequency = {}; 
    for(var i = 0;i < string.length-length;i++){ 
     var char = string.substring(i,i+length); 

     if(char.indexOf(' ') === -1){ 
      if(frequency[char] === undefined) 
       frequency[char] = 1; 
      else 
       frequency[char]++; 
     } 
    } 
    return frequency; 
}; 

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

Как это сделать?

+2

звучит как хороший план. Вы не задавали вопрос, хотя? Какой у Вас вопрос? –

+0

Есть ли у вас дальнейшие проблемы? Если ваша проблема решена, вы должны отметить ответ, который помог решить проблему как ** принятый **. Это помогает другим людям, которые имеют один и тот же вопрос. Happy Coding :) –

ответ

1

Продолжая ваш код. См объяснения в комментариях:

// frequency object is populated 
entries = []; 
for (var key in frequency) { // convert freqeuncy into array of entries 
    if (p.hasOwnProperty(key)) { 
    entries.push({ key:key, freq:frequency[key] }); 
    } 
} 

entries.sort(function(a, b) { // sort entries by freq 
    return a.freq - b.freq; 
}).map(function(entry) { // pluck out only the key, which is the substring 
    return entry.key; 
}); 
0

вам нужно иметь массив подстроки, а затем вы можете предоставить компаратор к методу JS sort сделать сортировку.

Предположим, у вас есть массив подстрок, а именно: substrings

var frequencies = nthFrequencyCount(string, length); 
substrings.sort(function (a, b) { 
    // This sort the substrings in ascending order of frequency 
    return frequencies[a] - frequencies[b]; 
}); 
+0

У меня нет массива «substrings», то, что я получаю от своего «NthFrequencyCount», является массивом, в котором вы используете подстроку для доступа к данным, а данные - это число, которое представляет собой частоту. – Gil

+0

ваш NthFrequencyCount возвращает объект, а не массив, поэтому вы не можете его отсортировать. Если вы не можете создать или получить доступ к такому массиву до этого, это решение @ LingZong выше поможет создать этот массив из ваших частотных объектов. –

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