在Javascript中,如何获取对数组中元素的引用?

时间:2015-10-15 14:50:13

标签: javascript optimization reference bit-manipulation micro-optimization

我有一段像

这样的代码
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;

此外,我想知道是否有一个操作可以执行相当于在01之间切换的操作,相当于

if (elem === 1) 
   elem = 0;
else 
   elem = 1;

是否有一些花哨的按位操作可以做到这一点?

1 个答案:

答案 0 :(得分:1)

@Andreas的评论是一个很好的优化。变成后人的答案:

A[i][j] ^= 1;

它只检索一次值并应用结果。您仍然无法获取内存地址(JS仅供参考),但它限制了您访问它的次数。

当应用1个掩码时,Bitwise XOR具有转动0 -> 11 -> 0的良好效果。通过在一个操作中完成所有工作,您可以获得尽可能少的访问。

编辑:根据讨论,当数组填充0/1值时,此解决方案仅