我有以下物件:
const config = {
name: "app",
android: {
name: "app-android",
googleMaps: {
location: "us",
}
}
}
我想創建一個新物件dynamicConfig,它復制config物件但添加一些欄位android.googleMaps:
const dynamicConfig = {
...config,
android: {
...config.android,
googleMaps: {
...config.android.googleMaps,
endPoint: "some-endpoint",
apiKey: "some-api-key",
}
}
}
有沒有其他更清潔的方法來處理這個?我必須多次傳播嗎?
uj5u.com熱心網友回復:
您要問的是如何進行Deep Merge,我強烈建議您先檢查一下。
因此,不幸的是,您現在將看到有 2 個主要選項可供您選擇。
- 撰寫自己的深度合并函式
- 使用外部庫,因為,是的,其他人已經這樣做了
如果你需要這個庫,我建議你試試Lodash _.merge()。
uj5u.com熱心網友回復:
你可以這樣試試。structuredClone()創建給定值的深層克隆
const dynamicConfig = structuredClone(config);
dynamicConfig.android.googleMaps.endPoint = "some-endpoint";
dynamicConfig.android.googleMaps.apiKey= "some-api-key";
uj5u.com熱心網友回復:
我建議使用Lodash Merge,這是深度合并最簡單的方法。例如:
var merge = require('lodash.merge');
const config = {
name: "app",
android: {
name: "app-android",
googleMaps: {
location: "us",
}
}
}
const additionalConfig = {
android: {
googleMaps: {
endPoint: "some-endpoint",
apiKey: "some-api-key",
}
}
}
output = merge(config, additionalConfig);
console.log(output);
結果:
{
name: "app",
android: {
name: "app-android",
googleMaps: {
apiKey: "some-api-key",
endPoint: "some-endpoint",
location: "us",
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/493288.html
上一篇:將函式結果顯示到html
