2016-12-12 7 views
3

私はこれらの2つの配列にいくつか問題があります。最初の配列の要素をデュアルコムなしで2番目の配列にコピー

for (i = 0; i < post_data_route.length; i++) { 
    route_array.push(coordinates_array[post_data_route[i] - 1]); 
} 
route_array[route_array.length - 1][0] -= 0.00001; 
route_array[route_array.length - 1][1] -= 0.00001; 

route_array[route_array.length - 1]route_array[0]に等しいが、私はそれらの1つを変更しようとすると、もう一つは、あまりにも変化します。私はそれがポインターについてだと思いますが、どうしてそれが起こりますか?配列の値を別の値にプッシュするだけではないのですか? どうすればそれを取り除くことができますか? あなたの回答と提案をありがとう。

+1

、その後、あなただけのroute_array''に同じ参照を追加しています。 – vlaz

答えて

2

あなたは手段は、あなたがコピーを取得することを、データ用Array#sliceを使用することができます。

slice()方法が終了する開始から選択された新たな配列オブジェクトへの配列の部分の浅いコピーを返す(端部が含まれていません)。元の配列は変更されません。 post_data_route`は、他の配列が含まれているため、 `

for (i = 0; i < post_data_route.length; i++) { 
    route_array.push(coordinates_array[post_data_route[i] - 1].slice()); 
} 
+0

あなたの答えをありがとうが、私の配列は完全に配列で満たされていないので、これは私が探していたものではありませんが、私はもうちょっと近づいています。私はこれが答えだと思う。ありがとう、たくさんの仲間。 –

+1

スライスは(配列の要素の)オブジェクト参照をそのままコピーし、同じ効果を持ちます。 –

+0

@brawl_up、私たちは実際にあなたのデータがどのように見えるかわからない、有効な回答を与えるために、この部分をあなたの質問に追加してください。 –

0

あなたはJSON.parse(JSON.stringify(yourArray))

で新しいオブジェクトや配列を作成することができ、そのようにいいが、そのあなたの配列が多次元であるため、あなたは、ない値が、別の配列を推進している

2

を働いていません。各ディメンションの値を別々にプッシュする必要があります。

例:

route_array.push([ 
     coordinates_array[post_data_route[i] - 1][0], 
     coordinates_array[post_data_route[i] - 1][1] 
     ]); 
関連する問題