Проблема в том, что используемый вами файл имеет окончания строк в стиле Windows (CR LF или \r\n
, выраженные в символах), и вы разбиваетесь на окончания строк в стиле Unix (LF или \n
), что приводит к неверному массиву слов :
const stringOfWords = "apple\r\nbroccoli\r\ncarrot"; //windows line endings
console.log(stringOfWords)
const words = stringOfWords.split("\n");
console.log(words);
console.log(words.includes("apple"))
Или вы можете разделить только окончания строк Windows, но вы рискуете, что код не работает для окончаний строк Unix:
const stringOfWords = "apple\r\nbroccoli\r\ncarrot"; //windows line endings
console.log(stringOfWords)
const words = stringOfWords.split("\r\n");
console.log(words);
console.log(words.includes("apple"))
Или вместо этого вы можете преобразовать ваш файл в окончания файлов Unix, и ваш код будет работать без изменений:
const stringOfWords = "apple\nbroccoli\ncarrot"; //unix line endings
console.log(stringOfWords)
const words = stringOfWords.split("\n");
console.log(words);
console.log(words.includes("apple"))
Или вы можете обрезать свои слова, чтобы удалить пробелы и, таким образом, иметь возможность обрабатывать оба конца строки, но это может быть потенциально тяжелой операцией для больших файлов:
const stringOfWords = "apple\r\nbroccoli\r\ncarrot"; //windows line endings
console.log(stringOfWords)
const words = stringOfWords.split("\n")
.map(word => word.trim());
console.log(words);
console.log(words.includes("apple"))
Или вы также можете разделить регулярным выражением для концов строк Windows или Unix:
const stringOfWords = "apple\r\nbroccoli\r\ncarrot"; //windows line endings
console.log(stringOfWords)
const words = stringOfWords.split(/\r?\n/);
console.log(words);
console.log(words.includes("apple"))