Я пытаюсь разрешить поиск с выделением жирным шрифтом соответствующих частей. Например, если у меня есть имя «Джон» и я ищу «Джо Джо» в той же строке, я хочу, чтобы он взял ту часть, которая соответствует наибольшему количеству совпадений, и выделил эту часть жирным шрифтом, чтобы получилось, как John.
Это то, что у меня есть до сих пор, и я не могу понять, почему в моем отладчике инструментов vue написано «ошибка во время оценки».
computed: {
bold: function () {
var compare = [];
var word = 'john';
var array = ['jo', 'joh'];
for (var i = 0; i < array.length; i++) {
if (word.contains(array[i])) {
compare[i] = array[i];
}
}
var maxWord = compare[0];
for (var i = 0; i < compare.length - 1; i++) {
if (maxWord.length < compare[i].length) {
maxWord = compare[i];
}
}
return word.toString().replace(maxWord, '<strong>' + maxWord + '</strong>');
}
}
Отметьте это пример. Вы можете переопределить ввод поиска по своему усмотрению.
Есть метод boldString, конвертирующий строки:
function boldString(str, find){
var re = new RegExp(find, 'g');
return str.replace(re, '<b>'+find+'</b>');
}
Вы можете перебирать массив следующим образом:
function search(input){
var arr = ["john", "doe"];
var res = "";
var i = 0;
while(i < arr.length) {
res += boldString(arr[i], input);
res += " ";
i++;
}
return res;
}
Я надеюсь, что это помогает!