我想在List.js的搜索功能上执行regex。默认情况下,它的工作方式是搜索一个存在于整个句子中的单词。我想要实现的是,它应该搜索一个词,这是一个句子的开头。

在上面的图片中,你可以看到在所有四个句子中都存在着"Was“,但我只想把它列在最后的列表中,其中"Was”是每个句子的第一个单词。
ListJs源
发布于 2015-08-26 08:43:23
谢谢各位的建议。目前,我已经通过修改核心list.js文件来解决这个问题。我取代了:
var search = {
list: function() {
for (var k = 0, kl = list.items.length; k < kl; k++) {
search.item(list.items[k]);
}
},
item: function(item) {
item.found = false;
for (var j = 0, jl = columns.length; j < jl; j++) {
if (search.values(item.values(), columns[j])) {
item.found = true;
return;
}
}
},
values: function(values, column) {
if (values.hasOwnProperty(column)) {
text = toString(values[column]).toLowerCase();
if ((searchString !== "") && (text.search(searchString) > -1)) {
return true;
}
}
return false;
},
reset: function() {
list.reset.search();
list.searched = false;
}
};使用
if (typeof String.prototype.startsWith != 'function') {
// see below for better implementation!
String.prototype.startsWith = function (str) {
return this.indexOf(str) === 0;
};
}
var search = {
list: function() {
for (var k = 0, kl = list.items.length; k < kl; k++) {
search.item(list.items[k]);
}
},
item: function(item) {
item.found = false;
for (var j = 0, jl = columns.length; j < jl; j++) {
if (search.values(item.values(), columns[j])) {
item.found = true;
return;
}
}
},
values: function(values, column) {
if (values.hasOwnProperty(column)) {
text = toString(values[column]).toLowerCase();
if ((searchString !== "") && (text.startsWith(searchString))) {
return true;
}
}
return false;
},
reset: function() {
list.reset.search();
list.searched = false;
}
};解释:I创建了startsWith函数(在堆栈溢出中找到),该函数检查搜索字符串是否以给定句子的确切字符开始,并修改了父搜索块的值函数。并将其text.search()函数替换为我的startsWith函数。
https://stackoverflow.com/questions/32221220
复制相似问题