如何select随机关键字?

how to select random keyword?

我对这段代码有一个问题。它 select 是前三个关键字。如果我想 select 随机数中的关键字怎么办?目前,它有 7 个关键字,select 是前三个。如果我想 select 关键字 3,6,7 怎么办。我怎样才能在这里做随机函数?

(function($) {
   $.fn.replacetext = function (target, replacement, max) {
       var limit = max || -1;


       var $textNodes = this  
           .find("*")
           .andSelf()
           .contents()
           .filter(function () {
           return this.nodeType === 3 && !$(this).parent("a").length;
       });

       $textNodes.each(function (index, element) {
           var $element = $(element);
           var words = $element.text().split(/\b/);
           var matches = 0;
           var text = words.map(function (word, index) {
               if (matches >= limit) {
                   return word;
               }

               if (word.match(target)) {
                   ++matches;
                   return word.replace(target, replacement);
               }

               return word;
           });

           $element.replaceWith(text.join(''));
       });
   };
})(jQuery);


$("p").replacetext(/\bdress\b/gi, "<a href='http://www.google.com'>$&</a>", 3);

您可以通过以下方式实现以下行为:

在循环查找文本节点时,使用以下代码查找每个文本节点中的最大随机数:

var ranMax = $element.text().match(target).length

然后generate a set of random number在以下范围之间(1到最大随机数)

var arr = []
while (arr.length < max) {
    var randomnumber = Math.ceil(Math.random() * ranMax)
    var found = false;
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] == randomnumber) {
            found = true;
            break
        }
    }
    if (!found) arr[arr.length] = randomnumber;
}

检查匹配索引是否在随机数集合中,replace the value,否则return原始值。

var nth = 0;
value = value.replace(target, function (match, i, original) {
    nth++;
    return jQuery.inArray(nth, arr) > -1 ? 
        match.replace(target, replacement) : 
        match;
});

按照上述步骤,您可能会达到预期的效果。

工作示例,请参考以下fiddle:http://jsfiddle.net/zeskysee/14xjw4dr/2/

希望对您有所帮助 :D