Javascript 如何选择随机关键字?

Javascript 如何选择随机关键字?,javascript,random,keyword,Javascript,Random,Keyword,我对这个代码有一个问题。它选择前三个关键字。如果我想选择随机数中的关键字怎么办?目前,它有7个关键字,并选择前三个。如果我想选择关键字3,6,7怎么办。我如何在这里做随机函数 (function($) { $.fn.replacetext = function (target, replacement, max) { var limit = max || -1; var $textNodes = this .find("*")

我对这个代码有一个问题。它选择前三个关键字。如果我想选择随机数中的关键字怎么办?目前,它有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);
(函数($){
$.fn.replacetext=函数(目标、替换、最大值){
var限制=最大值| |-1;
var$textNodes=this
.find(“*”)
.andSelf()
.contents()
.filter(函数(){
返回this.nodeType===3&!$(this.parent(“a”).length;
});
$textNodes.each(函数(索引、元素){
变量$element=$(element);
var words=$element.text().split(/\b/);
var匹配=0;
var text=words.map(函数(单词、索引){
如果(匹配>=限制){
返回词;
}
if(单词匹配(目标)){
++火柴;
返回单词.replace(目标,replacement);
}
返回词;
});
$element.replacetwith(text.join(“”));
});
};
})(jQuery);
$(“p”).replacetext(/\bdress\b/gi,”,3);

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

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

var ranMax = $element.text().match(target).length
然后在以下范围(1到最大随机数)之间

通过以上步骤,您可以实现预期的行为

有关工作示例,请参考以下小提琴:


希望这有帮助:
replacetext
的第三个参数是您要查找的。您的
$textNodes。每个
都从第一个元素开始按顺序在数组上迭代。您可能希望在那里构建一个
rand
函数instead@GabrielGarcia不,我认为这是计算更换次数,而不是更换顺序。与论坛网站不同,我们不使用“谢谢”或“感谢任何帮助”或签名。请参见“.顺便说一句,这是“提前感谢”,而不是“提前感谢”。顺便说一句,这甚至不是语法课,谢谢。@JohnSaundersi刚刚注意到,它工作得很好,但我有一个错误,那就是“未捕获的TypeError:无法读取null的属性‘length’”为什么?你能给我看看你的小提琴吗,我可以帮你看看。
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;
}
var nth = 0;
value = value.replace(target, function (match, i, original) {
    nth++;
    return jQuery.inArray(nth, arr) > -1 ? 
        match.replace(target, replacement) : 
        match;
});