suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript - Problem beim Vergleich der zweidimensionalen Array-Größe von js.

Fehler: Nicht erfasster Typfehler: Eigenschaft „1“ von undefiniert kann nicht gelesen werden

console.log() kann auf Zahlen zugreifen, warum tritt beim Vergleich ein Fehler auf?

<p id="abc">aaaaaa</p>
<script>
    var data = [
      ["北京", 10],
      ["上海", 20],
      ["福州", 30],
      ["广州", 40],
      ["成都", 40],
      ["西安", 100]
    ];

    var abc = document.getElementById('abc');
    j = 0;
    for (var i = 0; i < data.length; i++) {
        console.log(data[i][1]);
        if (data[i][1] > data[i+1][1]) {
            j++;
        };
    }

    abc.innerHTML = j;
</script>
PHP中文网PHP中文网2766 Tage vor932

Antworte allen(3)Ich werde antworten

  • 高洛峰

    高洛峰2017-06-26 10:57:26

    这个报错是溢出数组,现在data.length=6,当i=5是,i+1=6就溢出了。
    <p id="abc">aaaaaa</p>
    <script>

    var data = [
      ["北京", 10],
      ["上海", 20],
      ["福州", 30],
      ["广州", 40],
      ["成都", 40],
      ["西安", 100]
    ];
    
    var abc = document.getElementById('abc');
    j = 0;
    for (var i = 0; i < data.length; i++) {
        console.log(data[i][1]);
        if(i<data.length-1){
            if (data[i][1] > data[i+1][1]) {
                j++;
            };
        }
    }
    
    abc.innerHTML = j;

    </script>

    这样就不会报错了。

    Antwort
    0
  • 淡淡烟草味

    淡淡烟草味2017-06-26 10:57:26

    你可以这样写:

    var data = [
        ["北京", 10],
        ["上海", 20],
        ["福州", 30],
        ["广州", 40],
        ["成都", 40],
        ["西安", 100]
    ];
    var abc = document.getElementById('abc');
    var j = 0;
    var max = data[0][1];
    for (let i = 1; i < data.length; i++) {
        let temp = data[i][1];
        
        if (temp > max) {
            j = i;
            max = temp;
        }
    }
    abc.innerHTML = data[j][0];

    Antwort
    0
  • 淡淡烟草味

    淡淡烟草味2017-06-26 10:57:26

    因为数组越界了,当i = data.length - 1的时候, data[i+1][1]访问的就是 data[6][1],data[6]其实是没有的,因为他最大的才是data[5], 说的有点乱,不知道能看懂不

    Antwort
    0
  • StornierenAntwort