我试图以这种方式在JavaScript中创建1个字符的字符串的二维数组:
var panel = new Array(3).fill(new Array(3).fill('*'));
结果是
[
['*', '*', '*'],
['*', '*', '*'],
['*', '*', '*']
]
之后,我需要替换中间字符串:
panel[1][1] = '#';
结果是
[
['*', '#', '*'],
['*', '#', '*'],
['*', '#', '*']
]
因此,似乎原型fill
函数通过引用将对象填充到数组中。
是否可以强制fill
函数用不同的对象实例填充数组?如果没有,您认为哪种方法创建这种二维数组是最好的?
更新
算法假定创建一个星号平面,然后将许多星号替换为另一个产生合理结果的符号。之后将被打印。
在C
它可以使用的矩阵来完成char
S和改变在任何索引符号。但是,就我们不能简单地更改javascript字符串中的单个符号而言,我正在尝试找到一些不错的类似物。
目前,我已经使用两个循环创建了二维数组,然后更改了所需的符号,然后使用map
和join
函数将这个结果连接到一个字符串中。但这是最好的解决方案吗?
谢谢你。
不确定此方法的效率,但可以使用将该数组转换为字符串JSON.stingify()
,然后解析回原始格式,从而JSON.parse()
使对象失去其原始引用,并且可以轻松工作。
var panel = new Array(3).fill(new Array(3).fill('*'));
var copy = JSON.parse(JSON.stringify(panel));
copy[1][1] = '#';
//you can assign the value of variable 'copy' back to 'panel' if required.
document.write(JSON.stringify(copy)); //for demo
您可以通过这种方式将上述逻辑简化为单行代码,而无需额外的变量
var panel = JSON.parse(JSON.stringify(new Array(3).fill(new Array(3).fill('*'))));
panel[1][1] = '#';
document.write(JSON.stringify(panel)); //for demo
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句