有没有更快的方法来创建和清零矩阵?
目前,我的代码涉及两个for循环:
var nodes = new Array(ast.length);
for (var i=0; i < nodes.length; i++){
nodes[i] = new Array(ast.length);
for (var j=0; j < nodes.length; j++)
nodes[i][j]=0;
}
Run Code Online (Sandbox Code Playgroud)
gne*_*kus 10
您可以使用Array.prototype.fill方法:
var nodes = Array(ast.length).fill(Array(ast.length).fill(0));
Run Code Online (Sandbox Code Playgroud)
jsperf测试:http://jsperf.com/fill-array-matrix
由于您要求“更快”,看起来您可以通过创建单个初始化数组然后使用.slice()
复制它而不是初始化每个数组本身来获得一些速度:
var nodes = new Array(ast.length);
var copy = new Array(ast.length);
for (var i = 0; i < ast.length; i++) {
copy[i] = 0;
}
for (var i=0; i < nodes.length; i++){
nodes[i] = copy.slice(0);
}
Run Code Online (Sandbox Code Playgroud)
jsperf测试: http://jsperf.com/slice-vs-for-two-d-array/2
此方法在所有三种主要浏览器中看起来都快了 10-20%。
归档时间: |
|
查看次数: |
2168 次 |
最近记录: |