Javascript 二维字符串数组的创建
我正试图通过以下方式在javascript中创建由1个字符字符串组成的二维数组:Javascript 二维字符串数组的创建,javascript,arrays,Javascript,Arrays,我正试图通过以下方式在javascript中创建由1个字符字符串组成的二维数组: var panel = new Array(3).fill(new Array(3).fill('*')); 结果是 [ ['*', '*', '*'], ['*', '*', '*'], ['*', '*', '*'] ] 之后,我需要替换中间字符串: panel[1][1] = '#'; 结果是 [ ['*', '#', '*'], ['*', '#', '*'],
var panel = new Array(3).fill(new Array(3).fill('*'));
结果是
[
['*', '*', '*'],
['*', '*', '*'],
['*', '*', '*']
]
之后,我需要替换中间字符串:
panel[1][1] = '#';
结果是
[
['*', '#', '*'],
['*', '#', '*'],
['*', '#', '*']
]
所以,prototypefill
函数似乎通过引用用对象填充数组
是否可以强制fill
函数使用不同的对象实例填充数组?
如果没有,您认为创建这种二维阵列的最佳方法是什么
更新 算法假设创建一个星号平面,然后许多星号将被另一个符号替换,从而生成合理的结果。然后再打印出来 在
C
中,可以使用char
s矩阵和在任何索引处更改符号来完成。
但由于我们不能简单地改变javascript字符串中的单个符号,所以我正在尝试找到一些好的类比
目前,我已经使用两个循环创建了二维数组,然后更改了所需的符号,然后使用map
和join
函数将此结果连接到单个字符串。但这是最好的解决方案吗
谢谢。这是一个肮脏的补丁,但我还是会给它:
var panel = new Array(3).fill(new Array(3).fill('*'));
panel[1] = [panel[1][0],"#",panel[1][2]];
console.log(panel);
/*
Result:
[
['*', '*', '*'],
['*', '#', '*'],
['*', '*', '*']
]
*/
不确定此方法的效率,但使用
JSON.stingify()
将数组转换为字符串,然后通过JSON解析回原始格式。parse()
使对象失去其原始引用,工作起来没有任何痛苦
var panel=新数组(3.fill)(新数组(3.fill)('*');
var copy=JSON.parse(JSON.stringify(panel));
复制[1][1]=“#”;
//如果需要,可以将变量“copy”的值分配回“panel”。
document.write(JSON.stringify(copy))//为了演示
,请澄清……结果是您想要的输出吗?@jordanhendrix否,该结果是真实的javascript结果。期望的输出是在矩阵的中间只有一个'y'字串。@ YurayaKym让我知道如果我的解决方案对你有帮助。