var rs = new Array();
    rs[0] = parseInt(Math.random() * 8);
    var r = parseInt(Math.random() * 8);
    for (var i = 1; i < 8; i++) {
        var flag = false;
        do {
            for (var j = 0; j < parseInt(rs.length); j++) {
                if (rs[j] == r) {
                    flag = true;
                    break;
                }
            }
            if (flag)
                r = parseInt(Math.random() * 8);
            else
                rs[i] = r;
        } while (!flag);
    }

解决方案 »

  1.   


    var arr = [0,1,2,3,4,5,6,7];
    var out = [];
    while(arr.length){
    var index = parseInt(Math.random() * arr.length);
    out = out.concat( arr.splice(index, 1) );
    }
    console.log(out);
      

  2.   


    微信:ambit_tsai。QQ群:663286147。
      

  3.   

    满足需求楼上的方法就可以了,至于哪里出了问题,你有没有发现flag=true之后就进入下一个for循环了,所以i+1,留空