如何选择随机关键字?

时间:2015-01-26 01:59:18

标签: javascript random keyword

我对此代码有一个问题。它选择前三个关键字。如果我想在随机数中选择关键字怎么办?目前,它有7个关键字,它选择前三个。如果我想选择关键字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);

1 个答案:

答案 0 :(得分:0)

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

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

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中,否则返回原始值。

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

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

有关工作示例,请参阅以下小提琴:http://jsfiddle.net/zeskysee/14xjw4dr/2/

希望这有帮助:D