用种子洗牌

时间:2012-01-27 09:45:54

标签: javascript jquery

我有一个小字符串和一个固定的种子,我试图用给定的种子洗牌所有字符串元素,以便它可重复。

这是我的代码:

function shufff(strin,seed){
    var tem;
    var j;
    var tt = strin.length;
    for(var i=0; i<tt; i++){
        j = ( seed % (i+1) + i) % tt;
        tem=strin[i];
        strin[i] = strin[j];
        strin[j] = tem;
    }
    return strin;
}

var tom='tomollow';
alert(shufff(tom,6543));

这将返回原始字符串而不进行随机播放。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

对JavaScript字符串中单个字符的数组样式访问是只读。 (在旧浏览器中根本不支持。)

对代码进行最小化更改以使其工作将是将字符串转换为数组进行处理,然后在返回时将其转换回字符串:

function shufff(strin,seed){
    strin = strin.split("");
    var tem;
    var j;
    var tt = strin.length;
    for(var i=0; i<tt; i++){
        j = ( seed % (i+1) + i) % tt;
        tem=strin[i];
        strin[i] = strin[j];
        strin[j] = tem;
    }
    return strin.join("");
}

工作演示:http://jsfiddle.net/fcKDN/