我正在使用 Node v16.15.1 和 TypeScript v4.7.4
我想將一個物件拆分為多個物件,然后將每個物件作為一個值插入另一個物件中。IE
{key1:"value1", key2:"value2"}
-> {key1:"value1"} and {key2:"value2"}
-> {key3:"value3", key4:"value4", key5:{key1:"value1"}} and {key3:"value3", key4:"value4", key5:{key2:"value2"}}
下面是我正在使用的代碼:
let a:any = {}
let entries = Object.entries({key1:"value1", key2:"value2"});
for(const el of entries) {
let b = a;
b.key = Object.fromEntries(new Map([el]));
console.log(b.key);
console.log(b)
}
但是,我得到的輸出是this。{key2:"value2"} 在兩個物件中,而不僅僅是第二個。
但是,如果我使用以下代碼,我會得到正確的結果:
let entries = Object.entries({key1:"value1", key2:"value2"});
for(const el of entries) {
let b:any = {};
b.key = Object.fromEntries(new Map([el]));
console.log(b.key);
console.log(b)
}
問題在于我沒有插入空白物件,而是將其作為函式中的引數傳遞。
為什么會這樣?
我將如何解決這個問題?
TIA
uj5u.com熱心網友回復:
在javascript中,當您這樣做時let a:any = {};,let b = a;您將分配給(而不是值)b的參考。a所以如果你更新b,你實際上是在更新,a因為兩個變數是相同的。
如果您想b成為副本,a您應該執行以下操作:let b = {...a}。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/504558.html
