我有一个小提琴(注意:通过 JSONP 访问一个近 2k 的文件)。它在加载时有一个由两个和三个字母单词组成的小单词列表,这些单词被加载到一个数组中。然后使用Array.prototype.filter
. 这行得通。
然后我的页面开始下载 Enable1 单词列表(大多数游戏都使用单词列表)。此时,我的过滤器函数以一个空数组结束,而不是预期的 105 个单词。
我可以确认,无论是之前还是之后,
aa
我的单词列表具有应显示的相同起始单词 ( ),- 列表分别有 1091 和 172820 字
- 所有单词都是小写的,并且没有周围的空格
- 加载时,唯一的过滤条件是“正好有两个字母”
- 控制台上没有错误
- Fiddle 页面的 RAM 使用量增加了 100mb (25%),我的系统剩余 35% RAM
这是我的代码。
function VM() {
var self = this;
self.characters = ko.observable(2);
self.words = ko.observableArray(document.getElementById("words")
.innerHTML.split(/\s+/g).slice(1, -1)
.map(function (word) {
return word.toLowerCase();
}));
self.possible = ko.computed(function () {
var letters = self.letters(),
starters = self.startsWith(),
enders = self.endsWith(),
characters = self.characters();
return self.words().filter(function (word) {
return word.length === parseInt(characters);
})
.filter(function (word) {
if (enders === "") return true;
for (var i = enders.length; i >= 0; --i) {
if (word.slice(-1) === enders[i]) return true;
}
return false;
})/* other filtering code */;
});
}
ko.applyBindings(app = new VM);
$.getJSON('http://anyorigin.com/get?url=https://scrabble-dictionary-search.googlecode.com/svn-history/r6/trunk/src/main/resources/enable1.txt&callback=?', function(data){
app.words(data.contents.split("\n"));
console.log(app.words().length);
});
这是什么原因造成的?我怎样才能让它像使用较小的列表一样工作?