4

PHPのstr_shuffle()関数のように、javascript で文字列をシャッフルするのに似た関数はありますか?

助けてください !

4

6 に答える 6

5

そのような関数は存在しません。自分で作成します。次に例を示します。

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'));
于 2010-06-20T13:40:37.417 に答える
1

php.js 実装を使用できます: http://phpjs.org/functions/str_shuffle:529

于 2010-06-20T13:35:35.263 に答える
0

いいえ、文字シーケンスをランダム化する String の組み込みメソッドはありません。

于 2010-06-20T13:35:27.837 に答える
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 ('');
}
于 2010-06-20T14:22:03.310 に答える
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();
于 2014-02-22T23:24:12.260 に答える