2017-03-13 19 views
0

javascriptコレクションに何らかのリファレンス問題があります。ここでjavascriptコレクションの参考文献

はplunkerある - >plunker

問題は、私が

approverSteps[0].loadedApprovers.push({prop1: 'test'}); 

をやっているときにapproverStepsコレクションすなわち(approverSteps 1)の2番目の要素のloadedApproversプロパティも更新取得されています。私はそれが参照の問題だが、それを修正する方法を知っている。

ありがとうございます。

+0

を - 何が起こるか、あなたが起こることを期待するもの、彼らは異なっているか、などを – pvg

答えて

0

すべての項目は同じ空配列への参照としてloadedApprovers配列を取得します。

const approvalStepDefault = { 
    loadedApprovers: [] // this array 
}; 

配列も参照渡し(オブジェクト)です。

この試してみてください:あなたは、あなたの質問にあなたのコードを入れて、あなたが直面している実際の問題記述する必要があります

// no need for approvalStepDefault 

let data = { 
    steps: [{id: '01'},{id: '02'}] 
}; 

let approverSteps = (data.steps || []).map(item => { 
    const obj = Object.assign({}, item); // copy item so the original item will remain intact (remove this line if you don't want to work on a clone) 
    obj.loadedApprovers = [];    // brand new array for each object 
    return obj; 
}); 

approverSteps[0].loadedApprovers.push({prop1: 'test'}); 
console.log(approverSteps); 
関連する問題