在 Javascript 中,如何获取对数组中元素的引用?
In Javascript, how do I obtain a reference to an element in an array?
我有一段代码像
if (A[i][j] === 1)
A[i][j] = 0;
else
A[i][j] = 1;
我想知道如何像
那样对其进行优化
var elem = A[i][j]; // obviously A[i][j] is an R-value ... I want an L-value
if (elem === 1)
elem = 0;
else
elem = 1;
此外,我想知道是否有一个操作可以执行相当于 0
和 1
之间的切换,相当于
if (elem === 1)
elem = 0;
else
elem = 1;
是否有一些奇特的按位运算可以做到这一点?
@Andreas 的评论是一个很好的优化。变成了后代的答案:
A[i][j] ^= 1;
它只检索一次值并应用结果。你仍然无法获取内存地址(JS仅供参考),但它限制了你必须访问它的次数。
当应用 1 掩码时,按位 XOR 具有转换 0 -> 1
和 1 -> 0
的良好效果。通过一次操作完成所有工作,您可以获得尽可能少的访问权限。
编辑:根据讨论,此解决方案仅在数组填充 0 / 1 个值时有效。
我有一段代码像
if (A[i][j] === 1)
A[i][j] = 0;
else
A[i][j] = 1;
我想知道如何像
那样对其进行优化var elem = A[i][j]; // obviously A[i][j] is an R-value ... I want an L-value
if (elem === 1)
elem = 0;
else
elem = 1;
此外,我想知道是否有一个操作可以执行相当于 0
和 1
之间的切换,相当于
if (elem === 1)
elem = 0;
else
elem = 1;
是否有一些奇特的按位运算可以做到这一点?
@Andreas 的评论是一个很好的优化。变成了后代的答案:
A[i][j] ^= 1;
它只检索一次值并应用结果。你仍然无法获取内存地址(JS仅供参考),但它限制了你必须访问它的次数。
当应用 1 掩码时,按位 XOR 具有转换 0 -> 1
和 1 -> 0
的良好效果。通过一次操作完成所有工作,您可以获得尽可能少的访问权限。
编辑:根据讨论,此解决方案仅在数组填充 0 / 1 个值时有效。