[英]Javascript Manipulate array of objects
今天我發現了一些我不明白的東西,你能向我解釋一下它是如何工作的:
let places = [
{ num: 1, name: 'a'},
{ num: 2, name: 'b'},
{ num: 3, name: 'c'},
]
const order = (arr, numOut) => {
let newArr = new Array(...arr)
newArr[1].num = numOut;
console.log(newArr);
}
order(places,3);
console.log(places);
// OUTPUT :
// [ { num: 1, name: 'a' }, { num: 3, name: 'b' }, { num: 3, name: 'c' } ]
// [ { num: 1, name: 'a' }, { num: 3, name: 'b' }, { num: 3, name: 'c' } ]
let places = [
{ num: 1, name: "a" },
{ num: 2, name: "b" },
{ num: 3, name: "c" },
];
const order = (arr) => {
let newArr = new Array(...arr);
newArr.push({ num: 4, name: "d" });
console.log(newArr);
};
order(places);
console.log(places);
// OUTPUT :
// [{ num: 1, name: 'a' },{ num: 2, name: 'b' },{ num: 3, name: 'c' },{ num: 4, name: 'd' }]
//[ { num: 1, name: 'a' }, { num: 2, name: 'b' }, { num: 3, name: 'c' } ]
那么為什么原始數組被修改了,而使用 push 方法只修改了新數組呢?
在let newArr = new Array(...arr);
您正在創建數組的淺表副本。 換句話說,您有一些 object 引用的數組,並且您正在創建相同 object 引用的不同數組。
在您的示例中:
newArr[1].num = numOut;
更改 object 的num
值 D.push()
方法並在其中添加對新創建的 object F 的引用在此處閱讀有關淺拷貝和深拷貝的更多信息: 深拷貝和淺拷貝有什么區別?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.