我正在尝试寻找一种使用 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 提供了更惯用或至少更简洁的方法:
-
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/