Javascript 二维字符串数组的创建

Javascript 二维字符串数组的创建,javascript,arrays,Javascript,Arrays,我正试图通过以下方式在javascript中创建由1个字符字符串组成的二维数组: var panel = new Array(3).fill(new Array(3).fill('*')); 结果是 [ ['*', '*', '*'], ['*', '*', '*'], ['*', '*', '*'] ] 之后,我需要替换中间字符串: panel[1][1] = '#'; 结果是 [ ['*', '#', '*'], ['*', '#', '*'],

我正试图通过以下方式在javascript中创建由1个字符字符串组成的二维数组:

var panel = new Array(3).fill(new Array(3).fill('*'));
结果是

[
    ['*', '*', '*'],
    ['*', '*', '*'],
    ['*', '*', '*']
]
之后,我需要替换中间字符串:

panel[1][1] = '#';
结果是

[
    ['*', '#', '*'],
    ['*', '#', '*'],
    ['*', '#', '*']
]
所以,prototype
fill
函数似乎通过引用用对象填充数组

是否可以强制
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让我知道如果我的解决方案对你有帮助。