“if”的条件是什么?为什么它会在假的时候继续?

时间:2017-04-17 08:07:58

标签: javascript arrays

我设置的条件是一个大于周围的数字,但它是假的。

for (var i = 0; i + 1 < n; i++) {
    if (arr[i] < arr[i + 1] || arr[i + 1] > arr[i + 2]) {
        count++;
        index1 = i + 1;
    }
}

arr = [1,2,3,6,5,4,7,8],n = 8.

当arr [i + 1]小于arr [i + 2]时,你可以看到计数加。

this is the picture of problem

3 个答案:

答案 0 :(得分:0)

您应该使用AND条件而不是OR来检查值是否大于左右。

参考下面的代码:

&#13;
&#13;
var arr=[1, 2, 3, 6, 5, 4, 9, 8];
var n=8;
var count = 0;
var pos = [];
for (var i = 0; i + 1 < n; i++) {
    if (arr[i] < arr[i + 1] && arr[i + 1] > arr[i + 2]) {
        count++;
        index1 = i + 1;
        pos.push(index1);
    }
}
console.log("positions: "+pos);
console.log("count: "+count);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

问题是||(OR),因为

true || false will result in true 

此外,&amp;&amp;(AND)将导致

true && false will reult in false

所以使用“&amp;&amp;”修改你的功能而不是“||”

var arr=[1, 2, 3, 6, 5, 4, 9, 8];
var n=8;
var count = 0;
for (var i = 0; i + 1 < n; i++) {
    if (arr[i] < arr[i + 1] && arr[i + 1] > arr[i + 2]) {
        count++;
        index1 = i + 1;
    }
}

请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators了解进一步的理解

答案 2 :(得分:-1)

当我达到6时,你用i + 2 = 8测试数组[i + 2],所以索引i + 2超出范围(数组包含8个元素,索引从0到7开始)。 在js中,从数组中获取值返回undefined,将其评估为假值(计算为false)。

您可以在此处获得有关假值的说明: