Mar*_*ahn 6 javascript algorithm design-patterns
我希望将一个标志传递给一个通过col-scanning或row-scanning运行算法的函数:
if run-on-x
for 1..x
for 1..y
do something with ary[x][y]
else
for 1..y
for 1..x
do something with ary[x][y]
Run Code Online (Sandbox Code Playgroud)
但我不想复制所有的循环和逻辑.
我想出来了:
let numPx = width * height;
for (let px = 0; px < numPx; px++) {
let [x, y] = yAxis ? [px % width, 0 | px / width] : [0 | px / height, px % height];
Run Code Online (Sandbox Code Playgroud)
但我认为所有的数学都很重,特别是当我在相当大的数组上运行时.
有一个更好的方法吗?
也许只需将它们作为参数传递,如下所示?:
function colRowScan(1stAxis,2ndAxis)
for 1.. 1stAxis
for 1.. 2ndAxis
do something with ary[x][y]
Run Code Online (Sandbox Code Playgroud)
如果没有看到“做某事”是什么,我不知道是否有任何不可预见的原因导致这不起作用,但考虑到您发布的内容,它应该可以解决问题。
我不完全确定你想在这里做什么:
let numPx = width * height;
for (let px = 0; px < numPx; px++) {
let [x, y] = yAxis ? [px % width, 0 | px / width] : [0 | px / height, px % height];
Run Code Online (Sandbox Code Playgroud)