サブ配列を含む次の配列があります (各サブ配列は HTML5 キャンバス上の座標のペアです)。
var myArray = [[364, 124],
[192, 272],
[209, 217],
[332, 227],
[241, 273],
[356, 387],
[104, 185],
[361, 380],
[297, 390],
[371, 311],
[191, 293]];
座標の各ペアを比較して、各値が少なくとも 10 離れていることを確認するにはどうすればよいですか。
例: 数値 272 (インデックス 1 の配列から) と数値 273 (インデックス 4 の配列から) を比較します。1 つしか離れていないため、1 つの値に 10 を追加します。
これが私が試したことです:
ここでは数字をランダムに生成していますが、最後に生成されたペアだけに関連付けることができます。
function crosses(){
var crossx, crossy, oldCrossx, oldCrossy, col;
for(var i=0; i<=10; i++){
crossx = randomFromInterval(100, xw-100);
crossy = randomFromInterval(100, xh-100);
if(crossesPos.length > 0){
oldCrossx = crossesPos[i-1][0];
oldCrossy = crossesPos[i-1][1];
if(crossx - oldCrossx < 20){
crossx += 10;
}
if(crossx - oldCrossx < -20 ){
crossx -= 10;
}
if(crossy - oldCrossy < 20){
crossy += 10;
}
if(crossy - oldCrossy < -20 ){
crossy -= 10;
}
}
}
だから私は新しいアプローチを考えていました.すべての数値が生成され、すでに配列になった後にデータを変更します.
私は間違ったアプローチを取っていると考えています:
数値を生成するためのより良い方法が必要なのかもしれません。現在、この関数を使用して特定の間隔で数値を生成しています。
function randomFromInterval(from,to){
return Math.floor(Math.random()*(to-from+1)+from);
}