正如標題所說 - 我正在嘗試使用 for-loop或查找陣列中的第一個空(缺失)數字(孔) ,如果陣列是連續的并且例如從 1 到 7 開始,我將需要最后一個陣列項之后的下一個整數,在本例中為 8。
每次整個迭代只需要一個孔回傳找到的值。
當涉及到第一個條件(陣列以大于 1 的值開始)時,我的邏輯是可以的,但是從下一個條件到最后一個條件總是被拾取。
簡而言之:
- 在 [2,3,4,5,6,7] 的陣列中,我需要“1”,我明白了;
- 在 [1,2,3,4,6,7] 的陣列中,我需要“5”,但得到“8”。
- 在 [1,2,3,4,5,6,7] 的陣列中,我需要“8”,我明白了。
const numbers = [1, 2, 3, 4, 6, 7];
document.getElementById("demo").innerHTML = numbers;
let hole;
holeFinder()
function holeFinder() {
for (let i = 0; i < numbers.length; i ) {
if (numbers[0] > 1) {
/* console.log(numbers[0]) */
hole = 1;
document.getElementById("demo").innerHTML = "<br>1: hole: " hole;
return hole;
}
if (numbers[i] > 1) {
if ((numbers[i] - numbers[i - 1]) > 1) {
hole = (numbers[i - 1] 1)
document.getElementById("demo").innerHTML = "<br>2: hole: " hole;
return hole;
}
if ((numbers[i] - numbers[i - 1]) == 1) {
hole = numbers[numbers.length - 1] 1;
document.getElementById("demo").innerHTML = "<br>3: hole: " hole;
return hole;
}
}
}
}
<h2>for loop method for finding non-sequential slots (holes) in an array</h2>
<p id="demo"></p>
JSFIDDLE
我的邏輯有什么問題?
uj5u.com熱心網友回復:
你可以做這樣的事情
const arr1 = [1, 2, 3, 4, 6, 7]
const arr2 = [1, 2, 4, 5, 6, 7]
const arr3 = [1, 2, 3, 4, 5, 6, 7]
const findHole = arr => {
for(let i = 0; i < arr.length; i ){
if(arr[i] !== i 1){
return i 1
}
}
return arr.length 1
}
console.log(findHole(arr1))
console.log(findHole(arr2))
console.log(findHole(arr3))
uj5u.com熱心網友回復:
您還可以使用 while 回圈并找到丟失的數字來打破回圈。
const one = [2, 3, 4, 5, 6, 7];
const two = [1, 2, 3, 4, 6, 7];
const three = [1, 2, 3, 4, 5, 6, 7];
function findHole(numbers) {
let count = 0;
let hole = null;
while (!hole) {
count
const number = count;
// if the array does not contain number, assign the number
// as the missing hole number
if (!numbers.includes(number)) {
hole = number;
}
}
return hole;
}
document.getElementById("demo").innerHTML = "1: hole: " findHole(one) '<br>';
document.getElementById("demo").innerHTML = "2: hole: " findHole(two) '<br>';
document.getElementById("demo").innerHTML = "3: hole: " findHole(three) '<br>';
<div id="demo"></div>
uj5u.com熱心網友回復:
您輸入第二個 if 陳述句的第二部分
if ((numbers[i] - numbers[i - 1]) == 1) {
hole = numbers[numbers.length - 1] 1;
document.getElementById("demo").innerHTML = "<br>3: hole: " hole;
return hole;
}
在回圈的第二次迭代中,只要在第一個索引處沒有找到孔,它總是會回傳最后一個陣列元素加一。您應該僅在陣列的最后一個元素處檢查此條件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/461268.html
標籤:javascript 数组 for循环
