Javascript: разбор текста в var в набор - PullRequest
2 голосов
/ 30 октября 2019

Я пытаюсь проанализировать текст из файла dictionary.txt для игры в слова в веб-браузере. Я нашел Как читать локальный текстовый файл? и использовал функцию readTextFile(file), предложенную верхним комментатором. Однако я не понимаю, как получить проанализированный текст в набор.

function readTextFile(file)
    {
        var rawFile = new XMLHttpRequest();
        rawFile.open("GET", file, false);
        rawFile.onreadystatechange = function ()
        {
            if(rawFile.readyState === 4)
            {
                if(rawFile.status === 200 || rawFile.status == 0)
                {
                    var allText = rawFile.responseText;
                    alert(allText)
                }
            }
        }
        rawFile.send(null);
      }

alert(allText) дает мне всплывающее окно со словами в dictionary.txt, поэтому я знаю, что слова правильно анализируютсяв переменную allText.

Как теперь переместить эти слова в структуру набора для использования в моей игре? Я думаю, что я сделал бы это в моей основной программе - запустите readTextFile, затем перейдите к настройке.

Кроме того, так как я впервые использую JavaScript, когда я запускаю readTextFile в моей основной программе, мне нужно сделать:

myWords = readTextFile("dictionary.txt");

Чтобы сохранить allText в myWords, или просто выполните:

readTextFile("dictionary.txt");

Сделайте так, чтобы я мог получить доступ к allTextв моей основной программе? Я незнаком с областью видимости в JS.

Ответы [ 2 ]

0 голосов
/ 30 октября 2019

Нам понадобится знать формат файла, чтобы помочь вам разобрать его. Если это текстовый файл со словом в каждой строке, то вы можете return allText; в своей функции, а затем поместить его в массив, используя

var myWords=readTextFile('dictionary.txt').split("\n");
0 голосов
/ 30 октября 2019

Я думаю, что все, что вам нужно сделать, это разбить текстовый файл на новые строки и отправить полученный список и создать новый объект Set с указанным списком.

Также проверьте документация по MDN для объекта Set.

let myWords = readTextFile("dictionary.txt");

console.log(myWords.has('apple'));  // true
console.log(myWords.has('banana')); // true
console.log(myWords.has('carrot')); // true
console.log(myWords.has('durian')); // false

function readTextFile(filename) {
  // Blah, blah, blah...
  // Code to read the file and return a string...
  // Ok, now we have a result:
  let result =
`apple
banana
carrot
`;

  return new Set(result.split('\n')); // Split the text by new-line and instantiate
}
...