用js生成一个长度为1000万的字符串

看书,讲到了位图。
是用位图的方式给电话号码排序,号码长度是7位,因此需要一个1000万长度的由0组成的字符串。
尝试了以下方法生成初始化的位图字符串,都卡死了。

for(var i="";i.length<10000000;i+=0){}
new Array(10000001).join("0")

请问有比较好的算法能办这件事吗?

阅读 6.1k
3 个回答

https://jsfiddle.net/ghcqhfad/1/
可以运行的。只是浏览器需要一些时间。

var text = "";
var possible = "0123456789";

for( var i=0; i < 10000000; i++ )
    text += possible.charAt(Math.floor(Math.random() * possible.length));

console.log(text);
export class Bitmap {
    private bin: Uint8Array;

    constructor(size: number) {
        this.bin = new Uint8Array(new ArrayBuffer((size >> 3) + 1));
    }

    public get(index: number): boolean {
        const row = index >> 3;
        const bit = 1 << (index % 8);
        return (this.bin[row] & bit) > 0;
    }

    public set(index: number, bool: boolean = true) {
        const row = index >> 3;
        const bit = 1 << (index % 8);
        if (bool) {
            this.bin[row] |= bit;
        } else {
            this.bin[row] &= (255 ^ bit);
        }
    };

    public fill(num: number = 0) {
        this.bin.fill(num);
    }

    public flip(index: number) {
        const row = Math.floor(index / 8);
        const bit = 1 << (index % 8);
        this.bin[row] ^= bit;
    }
}

js的字符串可是utf-16的编码哦 这离“位”差的有点远
还是用纯c来做吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题