Javascript内部更改数组值,是否有任何修复?

Javascript内部更改数组值,是否有任何修复?,javascript,html,Javascript,Html,我在下国际象棋。我将棋盘的一些分片存储在一个数组中,以便在我的程序中使用。问题是,当我更新数组中的值并将它们记录到控制台上时,我可以看到数组的值,这些值是正确的。但是,在控制台中单击并检查实际值后,数组将显示不同的值 我正在使用谷歌浏览器的控制台 我已经看到另一个堆栈溢出说这是一个已知的“bug”,但开发人员不会修复它,因为它实际上不是bug 以下是我在控制台中看到的内容: (2) ["a6", "a5"] 0: "`6" 1: "b6" length: 2 __proto__: Array(

我在下国际象棋。我将棋盘的一些分片存储在一个数组中,以便在我的程序中使用。问题是,当我更新数组中的值并将它们记录到控制台上时,我可以看到数组的值,这些值是正确的。但是,在控制台中单击并检查实际值后,数组将显示不同的值

我正在使用谷歌浏览器的控制台

我已经看到另一个堆栈溢出说这是一个已知的“bug”,但开发人员不会修复它,因为它实际上不是bug

以下是我在控制台中看到的内容:

 (2) ["a6", "a5"]
0: "`6"
1: "b6"
length: 2
__proto__: Array(0)
如您所见,我看到的数组中的值与存储在数组中的值不同。这会在我的程序中引起许多其他问题,这些问题依赖于这个数组的内容

我想知道的是,这是否常见,以及是否有任何修复方法。或者在某些情况下会发生类似的情况

此外,我仍然不确定,对于上面显示的数组^,数组的实际值是我看到的值(“a6”和“a5”),还是内部显示的错误值(“6”和“b6”)

请帮助,如果这不起作用,它将是非常困难的完成我的工作项目

以下是我用来更新数组的代码:

let moves = [];
 if (tile.slice(1, 2) == 7 && b1.board[dd].piece == null && b1.board[d].piece == null) {
            moves.push(d);
            moves.push(dd);
        }
        if (tile.slice(1, 2) == 7 && b1.board[d].piece == null && b1.board[dd].piece != null) {
            moves.push(d);
        }
        if (parseInt(tile.slice(1, 2)) > 1 && tile.slice(1, 2) != 7 && b1.board[d].piece == null) {
            moves.push(d);
        }
        if (tile.charCodeAt(0) > 97 && parseInt(tile.slice(1, 2)) > 1 && b1.board[ld].piece != null && b1.board[ld].piece.slice(0, 1) == "w") {
            moves.push(ld);
        }
        if (tile.charCodeAt(0) < 104 && parseInt(tile.slice(1, 2)) > 1 && b1.board[rd].piece != null && b1.board[rd].piece.slice(0, 1) == "w") {
            moves.push(rd);
        }
        console.log(moves);

如何解决此问题?

不确定这是否是原因,但当
console.log
时,Chrome和其他浏览器不会输出数组/对象的序列化值,而只存储它们上的引用。稍后,当您检查这些阵列/对象时,Chrome将显示这些阵列中的当前值,而不是记录时存在的值


尝试使用
console.log(JSON.stringify(thingToLog))
进行日志记录。或者更好地使用
console.log(JSON.stringify(thingToLog,undefined.))

顺便说一句,为什么不使用一种不需要切片的数据格式?@Nina Scholz你是什么意思?我的意思是使用类似
['a',5]
的东西或对象,而不是
'a5'
,这需要切片才能获得值。这主意不错,但是我必须修改我的所有代码,这将是一件痛苦的事情。console.log(JSON.stringify(thingToLog))实际上做什么?另外,我从不更改那些数组中的值,所以我应该获取最新的值。实际上,等等,不要紧,我确实更改了值,让我修复它,然后我会返回给你是的,你是对的,它记录了数组的最新值,但这太奇怪了,他们不应该修复它吗?无论如何谢谢你!这是正确答案检查此处的讨论:。这是一个相对已知的想法,我认为它被认为是按预期工作的,因为我认为它节省了存储空间。JSON.stringify将对象/数组转换为字符串,该字符串是不可变的,并按值记录,而不仅仅是一个引用,以后可以修改。
 (2) ["a6", "a5"]
0: "a6"
1: "a5"
length: 2
__proto__: Array(0)