如何摆脱数组边界

时间:2014-06-16 17:35:39

标签: javascript arrays for-loop

我有一个数组,通过循环我将细胞与它附近的细胞进行比较。我得到了超出范围的'例外, 我该如何解决?

for (var i = 0; i < array.length ; i++) {                               
            if ((++array[i] == array[i+1])) {                    
                alert("yes");
            }
            else {
                alert("no");
            }
        }

3 个答案:

答案 0 :(得分:2)

for (var i=0; i<array.length -1; i++)开始运行循环(因为您与array[i+1]进行比较)

答案 1 :(得分:0)

试试:

for (var i = 0; i < array.length - 1; i++) {}

答案 2 :(得分:0)

不确定你的想法,但在for循环之外使用++绝不是一个好主意,因为它可能会令人困惑。使用另一个变量指向数组中的另一个项目,同时使用边界检查器循环更容易调试并保持循环简单。

//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);
            }
        }