【发布时间】:2014-02-26 21:29:14
【问题描述】:
我正在尝试填充多维数组中的一个区域,但不确定该方法。
例如我有以下数组:
var map = [
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 2, 2, 2, 2, 2, 2, 0, 0],
[0, 2, 0, 0, 0, 0, 2, 0, 0],
[0, 2, 0, 2, 0, 0, 2, 0, 0],
[0, 2, 0, 0, 2, 0, 2, 0, 0],
[0, 0, 2, 0, 0, 0, 2, 0, 0],
[0, 0, 0, 2, 2, 2, 2, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0]
];
然后我尝试从 X 和 Y 位置获取数字,并用给定的数字(例如 1)填充所有这些数字(即 0),这将产生以下数组:
var map = [
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 2, 2, 2, 2, 2, 2, 0, 0],
[0, 2, 1, 1, 1, 1, 2, 0, 0],
[0, 2, 1, 2, 1, 1, 2, 0, 0],
[0, 2, 1, 1, 2, 1, 2, 0, 0],
[0, 0, 2, 1, 1, 1, 2, 0, 0],
[0, 0, 0, 2, 2, 2, 2, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0]
];
基本上只是在该区域内将所有相邻的数字 (0) 替换为 (1)。
使用 JavaScript 执行此操作的正确方法是什么?
【问题讨论】:
-
不清楚你到底想做什么。您如何决定哪些
0值应该更改为其他值? -
看起来有点像绘画程序的“填充”算法:2 形成一个封闭的“形状”,您想用数字 1 填充封闭区域。(只是观察。)
-
是的,正如 BrettFromLA 所说,我希望用数字 1 填充封闭区域,尽管它可以是任何数字 - 以传递给函数等为准
标签: javascript arrays algorithm multidimensional-array flood-fill