javascript - 模式转化为数组

标签 javascript jquery html arrays

我想使用 2 个 for 循环将类似此模式的内容(您可以在下面找到)绘制到字符串数组中。

let matrix = [
  "....................",
  ".000000000000000000.",
  ".0................0.",
  ".0.00000000000000.0.",
  ".0.0............0.0.",
  ".0.0.0000000000.0.0.",
  ".0.0.0........0.0.0.",
  ".0.0.0.000000.0.0.0.",
  ".0.0.0.0....0.0.0.0.",
  ".0.0.0.0.00.0.0.0.0.",
  ".0.0.0.0.00.0.0.0.0.",
  ".0.0.0.0....0.0.0.0.",
  ".0.0.0.000000.0.0.0.",
  ".0.0.0........0.0.0.",
  ".0.0.0000000000.0.0.",
  ".0.0............0.0.",
  ".0.00000000000000.0.",
  ".0................0.",
  ".000000000000000000.",
  "....................",
]

console.log(matrix)

注意:我希望能够指定模%(相同字符的行和列的宽度,以便在一种情况下在另一种情况下获得更大的宽度)案例更小的模式。

这是我到目前为止得到的代码。目前它只能绘制从左上到右下的“对 Angular 线”。

let matrix = [
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
]

for (let y=0; y<matrix.length; y++) {
  for (let x=0; x<matrix[y].length; x++) {
    if (x==y) {
      let row = matrix[y].split("")
      row[x] = ".";
      matrix[y] = row.join("")
    }
  }
}

console.log(matrix)

任何帮助将不胜感激。

最佳答案

我认为解决这个问题的方法是将预期的模式分成对称部分。

您可以看到数组的前半部分在下半部分反转。

如果你垂直分割它也是一样的。

因此,您唯一需要实现的是以下内容并反转几次以获得您想要的内容。

..........
.000000000
.0........
.0.0000000
.0.0......
.0.0.00000
.0.0.0....
.0.0.0.000
.0.0.0.0..
.0.0.0.0.0

let matrix = [
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
  "00000000000000000000",
];
let base = matrix[0];
let baseArr = matrix[0].split('').slice(0, base.length/2);
let response = [];
for (let y=0; y<matrix.length/2; y++) {
  for (let x=y; x<baseArr.length; x++) {
    baseArr[x] = baseArr[x] == '0' ? '.' : '0';
  }
  response.push(baseArr.join('') + baseArr.slice(0, baseArr.length).reverse().join(''));
}
console.log(response);
let responseArray = response.concat(response.slice(0, response.length).reverse());
console.log(responseArray);

关于javascript - 模式转化为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50272373/

相关文章:

javascript - 如何在 React 中加载 MathJax?

javascript - 检测 Javascript 何时表现不佳

jquery - 手动将 jQuery UI CSS 类应用于元素会导致 JS 行为异常

javascript - undefined object

javascript - 如何在html中呈现多行字符串变量

javascript - 未捕获的类型错误 : input. addEventListener 不是函数

javascript - Chrome 扩展 list V3 如何读取我的用户正在查看的网页的 HTML 和文本内容

javascript - JSON 在 HTML 中抛出未定义的错误

javascript - 使用 jQuery 突出显示所选选项

android - Android 键盘消失后固定元素 (HTML) 中断了吗?