元の点からグリッド上の 4 つの点を導き出そうとしています。これらには、左、右、下、上が 1 単位ずつ含まれます。
[4, 5]
私の出力から始めると、 [3, 5] [5, 5] [4, 4] [4, 6]
.
おそらくこれを行う方法を調べることができますが、代わりに独自の方法で遊んでおり、ロジックは正しいと思いますが、JavaScript自体に単純な問題があり、宣言するvar tempArr = cords;
と、そこからtempArr
に影響しているように見える変化cords
。これまでにこの問題が発生したことはありません。コードは次のとおりです。
var output = [],
cords = [4, 5];
var convertToCords = function(i){
var tempArr = cords;
var offset = ( ( i%2 ) * 2 ) - 1, // -1, 1, -1, 1
index = Math.floor(i/2); // 0, 0, 1, 1
tempArr[index] = cords[index] + offset;
return tempArr;
}
for (var i = 0; i < 4; ++i){
console.log(cords);
newCords = convertToCords(i);
var x = newCords[0],
y = newCords[1];
array[i] = "[" + x + ", " + y + "]";
}
console.log(output);
tempArr[index] = cords[index] + offset;
質問:私が に何かをするtempArr
とcords
も影響を受ける理由を誰でも見つけることができますか? tempArr
別の方法で宣言する必要がありますか?
jsFiddleを参照してください