2017-12-29 25 views
0

Ich habe eine js Array mit den folgenden ElementenFinding benachbarten Unterschied in mehrdimensionalen Array

var xy = [ 
    [11,21], 
    [20,10], 
    [36,70], 
    [42,70], 
] 

Ich möchte in einem anderen Array die Differenz zwischen jeweils benachbarten Elementen und Laden finden

xdiff = [9,16,6] 
ydiff = [11,60,0] 

ich versucht habe, mit

for(i=0; i<xy.length; i++) 
{ 
    xdiff.push(Math.abs(xy[i][0]-xy[i+1][0])) 
    ydiff.push(Math.abs(xy[i][1]-xy[i+1][1])) 
} 

Aber es gibt falsche Ausgabe.

+1

„* Aber es gibt falsche Ausgang . * "- Während Ihre Frage korrekt beantwortet wurde, überlegen Sie sich bitte, Ihre Frage zu bearbeiten, damit wir wissen, auf welche Weise die Ausgabe falsch ist In Zukunft können Besucher feststellen, ob sie das gleiche Problem haben wie Sie und ob die Antworten auf Ihre Frage lesenswert sind, um ihr eigenes Problem zu lösen. –

Antwort

1

Der Versuch läuft auf einen Fehler ein, wenn er bei der letzten xy Koordinate eintrifft. Es versucht, mit xy[i + 1] vorausschauend zu arbeiten, gibt aber undefined zurück.

Daraus ergibt sich die Fehler: Cannot read property '0' of undefined

Um das Problem zu beheben, nur Schleife bis zum Element vor das letzte Element:

var xy = [ 
 
    [11, 21], 
 
    [20, 10], 
 
    [36, 70], 
 
    [42, 70], 
 
], 
 
    xdiff = [], 
 
    ydiff = []; 
 
    
 
for (i = 0; i < xy.length - 1; i++) { 
 
    //      ^^^^ stop before the last element 
 

 
    xdiff.push(Math.abs(xy[i][0] - xy[i + 1][0])) 
 
    ydiff.push(Math.abs(xy[i][1] - xy[i + 1][1])) 
 
} 
 

 
console.log(xdiff, ydiff);

Verwandte Themen