填充 JavaScript 数组的更好方法

Better way of filling javascript array

本文关键字:更好 方法 数组 JavaScript 填充      更新时间:2023-09-26

我正在尝试找到一种更好的方法来使用 JavaScript 填充数组。

目前,我有一个看起来像这样的函数来生成固定大小的示例数据数组。 我需要样本数据不相同(非同质(,最好是伪随机的。

function () {
    var arraySize = (1024 * 10) / 4;  // Get size for 10k buffer
    var testdata = new Uint32Array(arraySize);
    for (var i = 0; i < arraySize; i++) {
        testdata[i] = Math.random() * 0xFFFFFFFF;
    };
    //...
};

它有效,但我怀疑它对 JavaScript 来说不是很惯用。

更广泛的担忧是,对于我正在运行的测试,我将需要更大(越来越大!(的数组,所以我担心系统对于一个临时对象来说饱和。

有没有更有效/惯用的方法来填充数组?

你的方法很好,很容易理解。

也许 EcmaScript 6 附带了更惯用的,或者至少是简洁的方法:

  • TypedArray.from

    Uint32Array.from( {length: 1024 * 10 / 4 /* 10k buffer */}, function() {
        return Math.random() * 0xFFFFFFFF;
    })
    // Alternatively, with an arrow function as a one-liner:
    Uint32Array.from( {length: 2560 }, () => Math.random() * 0xFFFFFFFF );
    
  • 立即调用的生成器表达式 (IIGE(,用于按需创建迭代器:

    new Uint32Array(function*() {
        var arraySize = (1024 * 10) / 4;  // Get size for 10k buffer
        for (var i=0; i<arraySize; i++)
            yield Math.random() * 0xFFFFFFFF;
    }());