理解for循环中的方括号-课程

时间:2021-05-18 23:29:04

标签: javascript

我目前正在学习 Javascript,如果有人能帮助我进一步理解 for 循环,我会很高兴。我想看看是否有人可以就这个循环的工作原理给我一个深入的解释。

这个想法是返回参数中的第一个非连续数字,如您所见,是 6。

因为我还在学习,所以我想详细而简单地了解它的工作原理,例如,arr[i]+1arr[i+1] 之间有什么区别?

function firstNonConsec(arr){
    for(let i = 0; i < arr.length - 1; i++){
        if(arr[i] + 1 !== arr[i+1]){
            return arr[i + 1];
        }
    }
    return null
};


console.log(firstNonConsec([1,2,3,4,6,7,8]));

4 个答案:

答案 0 :(得分:1)

<块引用>

arr[i]+1arr[i+1] 有什么区别?

这不是关于 for 循环的问题,而是关于数组的问题。

如果 arr 是一个数组,那么您可以通过执行 arr[item_number]

来获取其中一项的值

arr[i]+1 因此会给你表中 i 位置的值(例如,如果 i 等于 0,那将是数组中的第一个条目),加上一个* arr[i+1] 会给你表 i+1 位置的值(例如,如果 i 等于 0,那将是数组中的第二个条目)

  • 注意+1可以在Javascript中做很多事情,这取决于类型自动转换;在您只有数字的情况下,它会将数字增加 1

答案 1 :(得分:0)

您可以从 firstNonConsec([1,2,3,4,6,7,8])

的这个工作流程中获得参考
            i :    0  1  2  3  4  5  6  

       arr[i] :  [ 1, 2, 3, 4, 6, 7, 8 ]
                
   arr[i] + 1 :    2  3  4  5  7  8  9

     arr[i+1] :    2  3  4  6  7  8  N
 
 if-statement :    T  T  T  F  T  T  F           // T: true F: false

       return :    2  3  4  N  7  8  N           // N: null

答案 2 :(得分:0)

for 循环基本上是一种特殊的 while 循环

var i = 0;
while (i < 10) {
    // < code >
    i++
}

相同
for (let i = 0; i < 10; i++) {
    //< code >
}

while 循环用于许多不同的事情,因此请记住它们,但 for 循环使用最多。基本上第一个“段”(我将分号之前的任何内容称为段)在您编写的任何代码之前运行。它通常声明一个变量。第二段每次都运行,如果不满足条件,则停止循环。第三段也每次都运行,但它只是在你写的所有代码都写完之后运行一些代码。 在许多语言中,包括 JavaScript,您还可以遍历数组和 HashMap。在 JavaScript 中,您使用 inof 词。 用于/用于对象

for (let x in < object >) {
    //< code >
}

并且对于每次迭代,x 是对象属性之一的键

要遍历数组和其他可迭代对象(您可以使用 for/in,但这是不好的做法),请使用 for/of

for (var x of < array >) {
    //< code >
}

循环遍历数组或其他此类可迭代对象的值

arr[i+1] 和 arr[i]+1 的区别在于 arr[i+1] 会访问指定索引后的元素,而 arr[i]+1 会取索引的值,并返回 + 1(不会更改值,使用 += 更改值)。顺便说一句,您不必总是使用 of 来循环遍历数组,您可以这样做,每次都取 i 并增加它,然后取 i 的索引值。

问题的答案:

function firstNonConsec(arr) {
    let temp = arr[0];
    for (let i = 1; i < arr.length; i++) {
        temp = arr[i - 1];
        if (temp !== arr[i] - 1) return arr[i];
    }
    return null;
}

我没有使用 for of,因为您没有使用,但是如果您希望我使用 for of 写作,请发表评论 注意我大部分时间使用 let 是因为您不希望有一个不需要的随机变量,并且 let 仅限于循环的范围。此外,迭代变量通常命名为 i、j、x、y、z 等,因此您可能会经常使用 i

答案 3 :(得分:0)

arr[i]+1 返回 arr 的第 i 个数组位置的值,然后将该值加一。

arr = [2, 9, 5, 1]
i = 2
arr[2] + 1


Result: 6

所以它 1) 找到该位置的项目 2) 加 1。数组的索引从 0 开始:arr[n] = [0+n]

你总是得到等于括号内结果的值。

arr[i+1] 将返回第 i+1 个值。

arr = [2, 9, 5, 1]
i = 2
print(arr[i+1]) == print(arr[3])

Result: 1

所以这个将位置本身更改为 1。这就是 robocaller 可能完成呼叫然后选择列表中的下一个电话号码的方式。

就你而言:

 if(arr[i] + 1 !== arr[i+1]){
        return arr[i + 1];

如果列表中下一项的值不等于前一个值 + 1,则返回该值。该函数会打印出每个非连续数字的列表。