Как можно реализовать функцию яваскрипта для расчета частоты слов в текстеКак рассчитать частоту слова в тексте
frequencies('foo foo bar foo bar buz', ['foo', 'bar']);
should return {"bar": 2, "foo": 3}
Как можно реализовать функцию яваскрипта для расчета частоты слов в текстеКак рассчитать частоту слова в тексте
frequencies('foo foo bar foo bar buz', ['foo', 'bar']);
should return {"bar": 2, "foo": 3}
Нечто подобное должно сделать
function frequencies(str, opts) {
var o = {};
opts.forEach(function(opt) { o[opt] = 0; });
str.split(/\s+/).forEach(function(x) { if (x in o) o[x]++; });
return o;
}
Если вы можете использовать underscore/lodash так же просто, как:
function frequencies(str) {
return _.countBy(str.split(' '));
}
Как об этом:
function frequencies(str, words){
var ret = {}, split = str.split(' ');
for(var i = 0; i < split.length; i++){
var currentWord = split[i];
if(!currentWord || !~words.indexOf(currentWord)) continue;
ret[currentWord] = !ret[currentWord] ? 1 : ret[currentWord]+1;
}
return ret;
}
console.log(frequencies('foo foo bar foo bar buz', ['foo', 'bar']));
Это хорошо работает – abu
Я не думаю, что «поворот» это термин, который вы ищете. «подсчет», может быть. В любом случае у вас нет массива для начала, у вас есть строка. Всегда ли это пространство? – Brad
@Brad вторым параметром является массив –
@ bto.rdz Я вижу это, но вся точка функции заключается в анализе строки. Это то, что я получаю. Количество слов с фильтром. – Brad