0

元の点からグリッド上の 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;

質問:私が に何かをするtempArrcordsも影響を受ける理由を誰でも見つけることができますか? tempArr別の方法で宣言する必要がありますか?

jsFiddleを参照してください

4

1 に答える 1