我正在将c ++代码转换为here的javascript。其余的代码看起来很好但是跟随函数有问题。首先,while循环中的第二行抛出错误Uncaught ReferenceError: Invalid left-hand side in assignment
。当我将其更改为m = (A[m] >= key ? r : l);
时,此循环变为无限。 如何在javascript中解决?
function CeilIndex(A, l, r, key) {
var m;
while( r - l > 1 ) {
m = l + (r - l)/2;
(A[m] >= key ? r : l) = m; // ternary expression returns an l-value
}
return r;
}
答案 0 :(得分:1)
if (A[m] >= key) {
r = m;
} else {
l = m;
}
除了属性之外,JavaScript不能拥有变量左值(即你可以obj[A[m] >= key ? 'r' : 'l'] = m
,但不能提出你提出的值。)
答案 1 :(得分:1)
你只需要正确地打破你的左侧。我不知道您尝试做什么,但假设您将m
分配给r
或l
:
if (A[m] >= key) {
r = m;
} else {
l = m;
}
答案 2 :(得分:1)
在JavaScript中,您可以这样做:
A[m] >= key ? r = m : l = m;