在 Javascript 中获取迷宫颜色的二进制值

Obtain binary values of the maze color in Javascript

我是前端开发的新手。我正在尝试使用 HTML、CSS 和 Javascript 构建迷宫求解器。有一个起点和一个终点,我正在尝试使用最短路径算法来找到它们之间的最短距离。

这是我编写的 HTML 和 CSS 代码:

http://jsfiddle.net/p9qdhfub/1/

div {
    background: #000;
    float: left;
    height: 29vw;
    margin: 1%;
    width: 23%;
    }

    div:nth-child(3n-1){
    background:white;
    margin-left:0;
     }
    <section>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
</section>

白色代表:跨栏 黑色代表:实际路径

我想获得我创建的 4x4 迷宫的二进制表示,其中黑色代表 1,白色代表 0。 我怎样才能在 Javascript 中做到这一点??

结果应该是一个基于颜色的 4x4 矩阵。

How can I do that in Javascript??

如果你说你想测试每个 div 的背景颜色并将黑色映射到 1 并将白色映射到 0 那么在我看来你正在倒退整个事情:最好创建首先在 JS 中创建矩阵,然后使用适当的 类 从矩阵构建 html 来设置颜色(而不是使用 :nth-child(3n-1) 之类的东西)。然后您可以轻松地替换另一种绘图技术,例如 canvas 元素。

无论如何,从您现有的 html/css 开始,您可以使用 .getComputedStyle() 方法,如下所示:

var divs = document.querySelectorAll("section div");

var matrix = [].map.call(divs, function(v) {
  var b = window.getComputedStyle(v).backgroundColor;
  return b === "rgb(0, 0, 0)" ? 1 : 0;
}).reduce(function(p, c, i) {
  if (i % 4 === 0) p.push([]);
  p[p.length-1].push(c);
  return p;
}, []);

console.log(matrix);
section div {
  background: #000;
  float: left;
  height: 10px;
  margin: 2px;
  width: 23%;
}
div:nth-child(3n-1) {
  background: white;
  margin-left: 0;
}
<section>
  <div></div> <div></div> <div></div> <div></div>
  <div></div> <div></div> <div></div> <div></div>
  <div></div> <div></div> <div></div> <div></div>
  <div></div> <div></div> <div></div> <div></div>
</section>