2013-02-16 2 views
-1

Кто-нибудь знает простой способ подсчета вхождений слова в строку Javascript String без предопределенного списка слов, которые будут доступны? В идеале я хотел бы, чтобы он выводился в ассоциативный массив (Word, Count).Подсчет вхождений слова в строку Javascript

Например вход по линии «Здравствуйте, как вы Алло» будет выводить что-то вдоль линий: - «Hello»: 2 «как»: 1 «являются»: 1 «вы» : 1

Любая помощь очень ценится.

Спасибо,

+0

И вы пробовали что? Что пошло не так? –

+2

Это не место, где можно сделать домашнее задание. Обращайтесь к учебникам и изучите JavaScript. Если вы застряли в коде, тогда задайте здесь – asifsid88

ответ

3
var counts = myString.replace/[^\w\s]/g, "").split(/\s+/).reduce(function(map, word){ 
    map[word] = (map[word]||0)+1; 
    return map; 
}, Object.create(null)); 
2

Для простой строки этого должно хватить:

str = "hello hello hello this is a list of different words that it is"; 

var split = str.split(" "), 
    obj = {}; 

for (var x=0; x<split.length; x++){ 
    if(obj[split[x]]===undefined){ 
    obj[split[x]]=1; 
    }else{ 
    obj[split[x]]++; 
    } 
} 

Если вы хотите обработать предложения, хотя, вы должны будете сделать некоторые обработки пунктуации и т.д. (так, замените все !?. с пробелами)

+0

Спасибо, это блестяще. Как сказал кто-то другой, это было не для домашней работы, а для проекта, над которым я работаю. Еще раз спасибо. – user1840255

+0

Вы не должны проверять, чтобы значения были неопределенными, но проверьте для 'split [x] в obj' – Bergi