我有一個數組,並通過循環我比較細胞和它附近的細胞。我得到'超出範圍'的例外, 我該如何解決它?如何不走出陣列的邊界
for (var i = 0; i < array.length ; i++) {
if ((++array[i] == array[i+1])) {
alert("yes");
}
else {
alert("no");
}
}
我有一個數組,並通過循環我比較細胞和它附近的細胞。我得到'超出範圍'的例外, 我該如何解決它?如何不走出陣列的邊界
for (var i = 0; i < array.length ; i++) {
if ((++array[i] == array[i+1])) {
alert("yes");
}
else {
alert("no");
}
}
從for (var i=0; i<array.length -1; i++)
,而不是運行你的循環(因爲你比較反對array[i+1]
)
我現在試過了,得到相同的異常 – Damkulul
@Damkulul這是你使用的所有代碼嗎? –
@Damkulul:你不能有這個出界的錯誤。每次需要訪問第(i + 1)項時再次檢查您正在測試(我
只是嘗試:
for (var i = 0; i < array.length - 1; i++) {}
不知道你有什麼考慮,但使用++的外面循環從來不是一個好主意,因爲它可能會令人困惑。使用另一個變量指向數組中的另一個項目,同時與邊界檢查器一起循環更容易調試並保持循環簡單。
//displays 01010
//1=2(0),2=2(1),2=4(0),4=4(1),4=5(0)
var ptr = 0;
var items = new Array (1, 2, 2, 4, 4, 5);
for (var i = 0; i < items.length; i++) {
ptr++
if(ptr >= items.length)break;
if (items[i] == items[ptr]) {
console.log(1);
}
else {
console.log(0);
}
}
//or
//displays 10001 as each value is increased then compared
//2=2(1),3=2(0),3=4(0),5=4(0),5=5(1)
ptr = 0;
for (var i = 0; i < items.length; i++) {
ptr++
if (ptr >= items.length) break;
if (++items[i] == items[ptr]) {
console.log(1);
}
else {
console.log(0);
}
}
該數組的最後一個元素應與什麼進行比較?它在最後一次迭代時失敗,因爲「i + 1」的結果是一個不對應數組索引的數字。 –
最後的比較是在最後一個元素和它之前的元素之間。 – Damkulul
在這種情況下,現有的兩個答案應該是正確的。 –