Следующий код предназначен для создания объекта из списка слов.Функция в javascript не ведет последовательно
var buildDictionary = function() {
console.log("Buildling Dictionary");
console.log(masterList);
var word, vowelString, dict = {};
for (var i = 0; i < masterList.length; i++) {
word = masterList[i][0];
vowelString = getVowels(masterList[i]);
console.log(vowelString);
if (dict[vowelString] == undefined)
dict[vowelString] = [word];
else
dict[vowelString].push(word);
}
return dict;
}
var dictionary = buildDictionary();
При запуске как есть словарь представляет собой пустой объект. Однако, если я вручную вызвать его ...
dictionary = buildDictionary();
Он работает, как ожидалось!
Полный код, при необходимости, можно найти здесь https://jsfiddle.net/4yts4uvr/
'Run as is', что вы подразумеваете под этим? Чтобы выполнить функцию, вы должны ее вызвать. – mohamedrias
В вашей скрипке вы загружаете данные через ajax, который является асинхронным. Непосредственно после запуска buildDictionary, в этот момент данные еще не вернутся. Вам нужно построить словарь в своем обратном вызове ajax. –
Что я имею в виду, когда я просто загружаю свою страницу в браузере. Он запускает весь мой код, но на самом деле он не создает словарь. Затем, если я перейду на консоль и вручную наберю 'dictionary = buildDictionary();' он THEN создает словарь. – Steven