Я повторяю массив слов и пытаюсь записать их в литерал объекта, поэтому я могу назначить значение того, сколько раз эти слова происходят с каждым словом в литеральном/словаре. Проблема в том, что мне нужно проверить, чтобы слово не было добавлено в мой литерал. Я попытался с помощью in
, чтобы проверить, если свойство существует в буквальном, но он бросает ошибку:Как проверить, существует ли свойство в объекте/словаре?
Cannot use 'in' operator to search for 'We' in undefined
Вот проблематичной функция:
я заметил линию, которая вызывает проблему
function wordCountDict(filename) {
wordCount = {};
inputFile = fs.readFile(root + filename, 'utf8', function(error, data) {
if(error) {
console.log('error: ', error)
return false;
}
var words = data.split(" ");
for (i in words) {
if(words[i] in wordCount) { // This is where the problem occurs
wordCount[words[i]]++;
} else {
wordCount[words[i]] = 1;
}
console.log(words[i]);
}
});
}
Я прихожу из python, и это всегда был лучший/простой способ достичь этого, но javascript, похоже, не согласен.
Как бы это сделать в JavaScript?
Я не могу видеть, как вы получите сообщение об ошибке, если вы не разрушив объект 'wordCount' перед асинхронным' readFile' обратного вызова запуска. –
Действительно ли 'if (wordCount [слова [i]]) дает такую же ошибку? – epascarello
Очевидно, что существует объект, и использование 'in' для проверки ключей в объекте не должно прерываться, и когда он говорит, что объект не определен, здесь происходит что-то еще, что мы не видим. – adeneo