Vue.js来自多个搜索项的粗体字

时间:2018-08-10 10:20:32

标签: javascript arrays vue.js

我正在尝试允许对匹配的部分加粗的搜索。例如,如果我有一个名字“ John”并在同一字符串中搜索“ Jo Joh”,我希望它使john tha thas的匹配次数最大,并将该部分加粗,因此应该像 n。

到目前为止,这是我所拥有的,我无法弄清为什么它在我的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>');
    }
}

1 个答案:

答案 0 :(得分:1)

选中此example。您可以根据需要覆盖搜索输入。

有一个 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;
}

希望对您有帮助!