首页 > 解决方案 > 我可以在 Javascript 中通过引用传递列表(或矩阵)列表吗?

问题描述

我正在尝试使用函数 changeGrid() 更改此列表列表的内容。内部的每个字符都应替换为“X”,并且网格应全局更改。是否有可能做到这一点?当变量是一个对象时,我已经看到这样做了,但我不确定如何处理这样的矩阵。谢谢。

var grid =  [['T', 'W', 'Y', 'R'],
             ['E', 'N', 'P', 'H'],
             ['G', 'Z', 'Qu', 'R'],
             ['O', 'N', 'T', 'A']];


function changeGrid(table){
    table = [
        [ 'X', 'X', 'X', 'X' ],
        [ 'X', 'X', 'X', 'X' ],
        [ 'X', 'X', 'X', 'X' ],
        [ 'X', 'X', 'X', 'X' ]
      ]
    return table
}

console.log(grid)
console.log(changeGrid(grid));
console.log(grid);

标签: javascriptmatrixpass-by-reference

解决方案


它已经通过引用传递。你需要做一个 forEach (或类似的东西)。以下是一个快速而肮脏的解决方案:

var grid =  [['T', 'W', 'Y', 'R'],
             ['E', 'N', 'P', 'H'],
             ['G', 'Z', 'Qu', 'R'],
             ['O', 'N', 'T', 'A']];


function changeGrid(table){
    table.forEach((e1, i1) => e1.forEach((e2, i2) => table[i1][i2] = 'X'))
}

console.log(grid)
changeGrid(grid);
console.log(grid);


推荐阅读