我有桌子每个单元格都按x,y位置进行防御。例如,第一个单元格从0,0开始,依此类推...
我要使用此表并将其转换为[x,y,x,y,x,y....]
的此数组。
例如,对于此图片,预期结果应为以下arr
:const arr = [0,0,200,0,400,0,0,200,200,200,400,200,0,400,200,400,400,400];
问题是我只有以下数据可以使用:
const cols = 3;
const tableWidth = 600;
const colHeight = 200;
const items = 9;
const cellWidth = tableWidth / cols;
因此,我尝试对所有项目执行一个函数,并尝试找出x和y。但我不知道该怎么做才能一劳永逸。
const arr = [];
for (var i = 0; i < items; i++) {
const even = i % 2 === 0;
const x = ???;
const y = i * colHeight;
table.push(x,y);
}
console.log({ arr });
最佳答案
我建议您先计算行数,然后使用2个for
循环遍历行和列-这样会更易读:
const cols = 3;
const tableWidth = 600;
const colHeight = 200;
const items = 9;
const cellWidth = tableWidth / cols;
const rows = items / cols;
const arr = [];
for (let i = 0; i < rows; i++) {
for (let j = 0; j < cols; j++) {
const x = j * cellWidth;
const y = i * colHeight;
arr.push(x, y);
}
}
console.log(arr);
更新:如果您仍然想要一个
for
循环,请尝试以下方法:const cols = 3;
const tableWidth = 600;
const colHeight = 200;
const items = 9;
const cellWidth = tableWidth / cols;
const arr = [];
for (let i = 0; i < items; i++) {
const col = i % cols;
const row = Math.floor(i * cols / items);
arr.push(col * cellWidth, row * colHeight);
}
console.log(arr);
关于javascript - 如何计算表单元格位置到数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58491867/