javascript - 填充 javascript 数组的更好方法

标签 javascript arrays idioms

我正在尝试寻找一种使用 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;
    }());
    

关于javascript - 填充 javascript 数组的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27535780/

相关文章:

c++ - 避免运行时到编译时数字参数转换的代码重复

javascript - If 条件检查两个 TextFields 值

javascript - 如何打开 url 链接作为弹出屏幕

c - 双指针将 char 数组值分配给使用 char 指针的结构的 char 数组

c - 如何查找一个数字在数组中重复多少次?

C: char* 数组中的最后一个元素重写所有数组条目

smalltalk - 集合中元素的共现

clojure - 为什么 Clojure 习惯用法更喜欢返回 nil 而不是像Scheme 那样返回空列表?

javascript - 如何使用 AJAX 打印出 div 中的数据?

javascript - 如何将此数据库记录字符串格式化为此 JavaScript 对象数组?