Как выполнить Regex на listjs hackerlist?
Я хотел бы выполнить регулярное выражение для функциональности поиска List.js. Как это работает по умолчанию, это то, что он ищет слово, которое существует в целом предложении. Я хочу добиться того, чтобы он искал слово, являющееся началом предложения.
На картинке выше вы видите, что "есть" существует во всех 4 предложениях, но я хочу, чтобы оно было только в коротком списке, где "было" - это первое слово каждого предложения.
1 ответ
Спасибо ребята за предложения. На данный момент я сделал обходной путь, изменив файл core 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;
}
};
Объяснение: Я создал функцию StartWith (найден в stackru), которая проверяет, начинается ли строка поиска с точных символов данного предложения, и изменил функцию значений родительского блока поиска. и заменил его функцию text.search() моей функцией startWith.