2017-12-29 7 views
0

に隣接違いを見つける私は、次の要素多次元配列

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

私は、私が試してみました別の配列

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

内のすべての隣接する要素と店との違いを見つけたいとJSの配列を持っています

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])) 
} 

ただし、出力が間違っています。

+1

「*しかし、それは間違った出力を与えています。* " - あなたの質問が正しく答えられたように見えますが、出力が間違っていることを知るためにあなたの質問に[編集]してみてください。将来の訪問者はあなたと同じ問題を抱えているかどうか、あなたの質問に対する答えが自分の問題を解決するために読む価値があるかどうかを立証することができます。 –

答えて

1

最後のxy座標に到着すると、エラーが発生します。 xy[i + 1]を使用して先読みしようとしますが、undefinedを返します。

そこでエラー:Cannot read property '0' of undefined

問題を解決するには、要素までのループのみ前の最後の要素:

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