我想分配一個對象數組到另一個數組,但是當我創建新的數組和其他函數我改變它的值,原來的數組也改變以及(這是不好)。我可以用另一種方式嗎? 這是一個例子:http://codepen.io/Xiwi/pen/rLMbYp分配對象內容數組到一個新的數組
2
A
回答
3
看起來你需要複製/克隆數組,以便它不會被引用改變。
如果只有Primitive Types數組,你可以這樣做的:
var test3 = JSON.parse(JSON.stringify(test2));
否則,你需要一個遞歸解決方案,並在你的問題更具體。
實施例:
var test1 = [{name: 'test1'}];
var test2 = [{name: 'test2'}];
var test3 = JSON.parse(JSON.stringify(test2));
test3[0].name = 'test3';
// Open console
console.log('Test2: ',test2[0]); // Object {name: "test2"}
console.log('Test3: ',test3[0]); // Object {name: "test3"}
0
對象基本上是引用。您必須創建一個新的對象,並指定另一個對象的值:
var test3 = [ Object.assign({}, test2[0]) ];
0
使用簡單.map
複製對象到另一個的一個陣列。
var test1 = [{name: 'test1'}];
var test2 = [{name: 'test2'}];
//var test3 = test2.slice(0); //doesn't work. objects are still references
var test3 = test2.map(function(obj){
//return obj; //doesn't work. objects are still references
var o={}; //create brand new object
for(var prop in obj)
o[prop]=obj[prop];//assign properties
return o;//works
});
test3[0].name = 'test3';
// Open console
console.log('Test2: ',test2[0]);
console.log('Test3: ',test3[0]);
相關問題
- 1. PHP根據另一個數組的內容對對象數組重新排序
- 2. 分配值到一個新的數組
- 3. 對象數組的內存分配
- 4. 如何重新分配一個數組到另一個數組?
- 5. 分配隨機數到對象數組
- 6. 將數組內容複製到一個新的數組
- 7. 關閉對象的jQuery的數組到一個新的數組
- 8. 將NSArrayController的內容數組綁定到一個自定義(非數組)對象
- 9. JSTL - 分配列表內容到一個數組
- 10. 一個數組的內容到另一個數組
- 11. 單元格內容分配給非單元格數組對象
- 12. 一個字符串的數組內容到一個新的數組php
- 13. 創建一個JSON數組對象分組到相同的日期到一個新的數組?
- 14. 基於對象內數組的新對象數組?
- 15. iOS對象數組:在一個函數內部創建一個對象數組
- 16. 數組內的對象內的數組? ?
- 17. 按數組內容分組
- 18. Java:超類數組對象分配有子類數組對象
- 19. 展開並添加一個新的對象到一個函數內的數組
- 20. 如何在一個對象下分組三個對象數組?
- 21. 分配對象屬性值到一個數組或變量
- 22. 錯誤,動態分配對象到一個數組
- 23. console.log顯示數組對象的內容
- 24. 分配結構的數組,數組內
- 25. Perl將一個對象數組分配給一個散列
- 26. 重新分配一個結構數組
- 27. 配對/分組對象數據
- 28. Ruby:對象數組中的一個值的新數組
- 29. 將數組內容拆分成另一個數組php
- 30. 重新分配C++數組的內存。
你沒有序列化,我相信'[] .splice(0,0,ARR);'會做原語 – kirinthos
對不起'[] .concat(ARR)' – kirinthos
@kirinthos副本沒有。就像那樣你會遇到同樣的問題。在這裏檢查:https://jsfiddle.net/jbL0vm9m/ – Sergio