2016-10-05 15 views
-1

値を持つキーをJavaScriptオブジェクトに追加しようとすると、追加したキーだけでなく、すべてのキーの値が変更されます。javascriptオブジェクトのキー値を更新する

var corridorObject = {}; 
var makeObjects = []; 
function someFunction(){ 
    var a = makePoints; 
    var Corridor = viewer.entities.add({ 
     corridor : { 
      positions : (a), 
      width : 10.0, 
      material : Cesium.Color.GREEN, 
     } 
     var idv0 = Corridor.id 
     corridorObject[idv0] = makeObjects; 
     console.log(corridorObject); 
     makeObjects.length=0; 
    } 

回廊IDは、GUID、makeObjectsオブジェクトの配列、私はこれを実行すると、それは完全にキーを追加し、値ですが、私はそれを実行するときに、第2の時間は、それが持つ新しいキーを追加します新しいIDと新しい値を返しますが、他のすべてのキーの値も最新の値に変更します。ここ

あなたはIDの配列をより明確にするために、その2長い

Object {91ff9967-7019-4e76-846e-c0e125481060: Array[3]} 
Object {91ff9967-7019-4e76-846e-c0e125481060: Array[2], 3de2c2b1-5fb6-495c-9034-2b37713e5c30: Array[2]} 

申し訳ありませんが、同じIDで2回目3の長さで最初の時間を見ることができるように、これはからで、コンソールですCesiumjsは、そのポイントを取得し、それらを廊下に変換すると、廊下のIDとそれを作ったポイントの配列がこのオブジェクトに追加されます。その後、点の配列は空になります。

+0

出力を表示できますか? –

+0

結果の構造は何ですか? –

+1

すべての値を同じ配列オブジェクトにします。 – RemcoGerlich

答えて

0

あなたが1つのキーだけを取得する理由コードのこれらの行は、それは

var corridorObject = {}; 

ザッツを初期化します

var corridorObject = {}; 
var makeObjects = []; 
var idv0 = Corridor.id 
corridorObject[idv0] = makeObjects; 
console.log(corridorObject); 

を繰り返している場合。反復処理の外に初期化を行う

+0

私は私の説明を更新しました、オブジェクトの初期化は機能の外でした、私の不十分な初期の説明には申し訳ありません。それ以上の提案はありますか? –

関連する問題