我是JS和正则表达式的新手。我希望有人可以帮我解决我遇到的问题。
所以在我的代码中,我想要发生的是在自己的索引(here's a link to the .txt file I am reading from)中使用英语中的每个单词获取一个数组。到目前为止,我有这个:
$(document).ready(function(){
var allWords;
function getAllWords(list) {
$.get("wordlist.txt", function (words) {
var re = "/\w+$/m"
list = words.split(re);
console.log(list);
});
}
getAllWords(allWords);
console.log(allWords);
});
但它没有在自己的索引中包含每个单词,而是返回一个包含一个索引中所有单词的数组。任何人都可以告诉我哪里出错了/指向正确的方向吗?如果需要,我可以澄清更多。
提前致谢!
答案 0 :(得分:2)
一些问题:
var re = "/\w+$/m";
var re = /\s+/;
将一行分成白色空格上的单词。更新:: 更新了可能修复的代码:
re = /\s+/g;
$(document).ready(function() {
function getAllWords() {
$.get("wordlist.txt", function (response) {
var allWords = response.split(re);
console.log( allWords );
});
}
});
答案 1 :(得分:1)
您的代码存在多个问题:
getAllWords()
,并以某种方式预期结果最终会出现在该变量中。$.get()
是异步的,所以你不能在下一行代码中使用它的结果。这是一种可行的方法。这会修复正则表达式并添加一个在数据可用时调用的回调参数:
$(document).ready(function(){
function getAllWords(fn) {
$.get("wordlist.txt", function(data) {
var words = data.split(/\s+/);
fn(words);
});
}
getAllWords(function(words) {
console.log(words);
});
});
或者,使用jQuery promises(这是我处理异步操作的首选方式):
$(document).ready(function(){
function getAllWords(fn) {
return $.get("wordlist.txt").then(function(data) {
return data.split(/\s+/);
});
}
getAllWords.then(function(words) {
console.log(words);
});
});
答案 2 :(得分:0)
从正则表达式中删除美元符号。这样做:var re = /\w+/m;