我目前正在学习 Javascript,如果有人能帮助我进一步理解 for
循环,我会很高兴。我想看看是否有人可以就这个循环的工作原理给我一个深入的解释。
这个想法是返回参数中的第一个非连续数字,如您所见,是 6。
因为我还在学习,所以我想详细而简单地了解它的工作原理,例如,arr[i]+1
和 arr[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]));
答案 0 :(得分:1)
arr[i]+1
和 arr[i+1]
有什么区别?
这不是关于 for 循环的问题,而是关于数组的问题。
如果 arr
是一个数组,那么您可以通过执行 arr[item_number]
arr[i]+1
因此会给你表中 i 位置的值(例如,如果 i 等于 0,那将是数组中的第一个条目),加上一个*
arr[i+1]
会给你表 i+1 位置的值(例如,如果 i 等于 0,那将是数组中的第二个条目)
答案 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 中,您使用 in
和 of
词。
用于/用于对象
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,则返回该值。该函数会打印出每个非连续数字的列表。