缩短前面

发布于 2025-02-12 13:42:34 字数 475 浏览 1 评论 0原文

是否可以将这三个循环缩短为一个 该代码非常好,我只想知道是否有可能出于锻炼原因将这三个缩短为一个循环,也有可能用于代码可读性

let board_coord = []

for (let i = 0; i < 3; i++) {
  board_coord.push({
    x: i * 166,
    y: 0
  })
}
for (let j = 0; j < 3; j++) {
  board_coord.push({
    x: j * 166,
    y: 166
  })
}
for (let k = 0; k < 3; k++) {
  board_coord.push({
    x: k * 166,
    y: 332
  })
}

console.log(board_coord)

is it possible to shorten these three for loops into one
the code works absolutely fine, I just want to know if there is a possibility to shorten these three for loops into one for exercising reasons and also for code-readability

let board_coord = []

for (let i = 0; i < 3; i++) {
  board_coord.push({
    x: i * 166,
    y: 0
  })
}
for (let j = 0; j < 3; j++) {
  board_coord.push({
    x: j * 166,
    y: 166
  })
}
for (let k = 0; k < 3; k++) {
  board_coord.push({
    x: k * 166,
    y: 332
  })
}

console.log(board_coord)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

宁愿没拥抱 2025-02-19 13:42:34

一个循环需要一些数学。 (请参阅:

const boardCoord = [];

for (let i = 0; i < 9; i++) {
  boardCoord.push({
    x: (i % 3) * 166,
    y: Math.floor(i / 3) * 166
  })
}

console.log(boardCoord)

或广义...

const WIDTH = 3;
const HEIGHT = 3;
const SCALE = 166;

const boardCoord = [];
for (let i = 0; i < WIDTH * HEIGHT; i++) {
  boardCoord.push({
    x: (i % WIDTH) * SCALE,
    y: Math.floor(i / WIDTH) * SCALE
  })
}

console.log(boardCoord)

但这不一定比也可以概括的嵌套循环更可读。

const COLS = 3;
const ROWS = 3;
const SCALE = 166;

const boardCoord = [];
for (let row = 0; row < ROWS; row++) {
  for (let col = 0; col < COLS; col++) {
    boardCoord.push({ x: SCALE * col, y: SCALE * row });
  }
}
console.log(boardCoord)

A single loop would require a little math. (see: Remainder (%) and Math.floor())

const boardCoord = [];

for (let i = 0; i < 9; i++) {
  boardCoord.push({
    x: (i % 3) * 166,
    y: Math.floor(i / 3) * 166
  })
}

console.log(boardCoord)

Or generalized...

const WIDTH = 3;
const HEIGHT = 3;
const SCALE = 166;

const boardCoord = [];
for (let i = 0; i < WIDTH * HEIGHT; i++) {
  boardCoord.push({
    x: (i % WIDTH) * SCALE,
    y: Math.floor(i / WIDTH) * SCALE
  })
}

console.log(boardCoord)

But it's not necessarily more readable than a nested loop which can also be generalized.

const COLS = 3;
const ROWS = 3;
const SCALE = 166;

const boardCoord = [];
for (let row = 0; row < ROWS; row++) {
  for (let col = 0; col < COLS; col++) {
    boardCoord.push({ x: SCALE * col, y: SCALE * row });
  }
}
console.log(boardCoord)

北方的韩爷 2025-02-19 13:42:34

如果您的意思是单个顶级循环,则可以使用嵌套循环:

const SIZE = 166;
let boardCoord = [];
for (let i = 0; i < 3; i++) {
    for (let j = 0; j < 3; j++) {
        boardCoord.push({ x: SIZE * j, y: SIZE * i });
    }
}

我认为总体上的循环不会比这更可读。

If you mean a single top level loop, you could use a nested loop:

const SIZE = 166;
let boardCoord = [];
for (let i = 0; i < 3; i++) {
    for (let j = 0; j < 3; j++) {
        boardCoord.push({ x: SIZE * j, y: SIZE * i });
    }
}

I don't think a single loop overall would be any more readable than this.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文