我有桌子每个单元格都按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];

javascript - 如何计算表单元格位置到数组?-LMLPHP

问题是我只有以下数据可以使用:

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/

10-13 02:21