JavaScript中的str_shuffle()等效函数是什么?

4

类似于PHP中的str_shuffle()函数,JavaScript中是否有类似于字符串洗牌的函数?

请帮忙!

6个回答

6
没有这样的函数存在,你需要自己编写一个。这里有一个例子:
function shuffle(string) {
    var parts = string.split('');
    for (var i = parts.length; i > 0;) {
        var random = parseInt(Math.random() * i);
        var temp = parts[--i];
        parts[i] = parts[random];
        parts[random] = temp;
    }
    return parts.join('');
}

alert(shuffle('abcdef'));

顺便提一下,这是费舍尔-耶茨洗牌算法:http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle - Álvaro González

1

0
我建议使用 lodash shuffle 函数。
const result = _.shuffle('my_string');

0
你也可以把它做成一个原型:
String.prototype.shuffle = function() {
  var parts = this.split('');

  for (var i = 0, len = parts.length; i < len; i++) {
    var j = Math.floor( Math.random() * ( i + 1 ) );
    var temp = parts[i];
    parts[i] = parts[j];
    parts[j] = temp;
  }

  return parts.join('');
};

使用方法如下:

var myString = "Hello";
myString = myString.shuffle();

0

这是我的php.js函数版本

function str_shuffle (str) {

    var newStr = [];

    if (arguments.length < 1) {
        throw 'str_shuffle : Parameter str not specified';
    }

    if (typeof str !== 'string') {
        throw 'str_shuffle : Parameter str ( = ' + str + ') is not a string';
    }

    str = str.split (''); 
    while (str.length) {
        newStr.push (str.splice (Math.floor (Math.random () * (str.length - 1)) , 1)[0]);
    }

    return newStr.join ('');
}

0

不,String 没有内置的方法可以随机化字符序列。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接