我设置的条件是一个大于周围的数字,但它是假的。
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]时,你可以看到计数加。
答案 0 :(得分:0)
您应该使用AND条件而不是OR来检查值是否大于左右。
参考下面的代码:
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;
答案 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)。
您可以在此处获得有关假值的说明: