[英]How to remove specific element from a array or object using ES6 spread operators and rest operators
[英]How to replace the object array using simple filter and spread operators
我需要以下代碼的建議。 如果提到的menuKey
存在,這里的目標是刪除特定的數組。
注意: sdb.menu = 'account-links'
(在另一個文件中聲明);
const { menu = [] } = remainingConfig[sdb.menu]?.params || {};
const keysToRemove = ['sidebarReferAFriend'];
const filteredMenu = menu.filter(({ menuKey }: IMenuLink) => !keysToRemove.includes(menuKey));
如何將filteredMenu
分配回remainingConfig
對象?
我嘗試了一些擴展運算符選項,但它沒有給出現有的相同結構。 因此,請在您有時間的時候在這里提供一些幫助。
如果您可以直接分配給remainingConfig[sdb.menu].params.menu
屬性,那么如果數組不存在,您可能不需要創建數組,只有在數組和導致它的所有內容存在時才進行工作,然后只需分配回menu
:
const menuConfigParams = remainingConfig[sdb.menu]?.params;
const menu = menuConfigParams?.menu;
if (menu) {
const keysToRemove = ['sidebarReferAFriend'];
menuConfigParams.menu = menu.filter(({ menuKey }/*: IMenuLink*/) => !keysToRemove.includes(menuKey));
}
如果remainingConfig
配置結構是深度不可變的,那么我們必須創建一個新對象來在嵌套的每一層替換它:
const menuConfig = remainingConfig[sdb.menu];
const menuConfigParams = menuConfig?.params;
let menu = menuConfigParams?.menu;
if (menu) {
const keysToRemove = ['sidebarReferAFriend'];
menu = menu.filter(({ menuKey }/*: IMenuLink*/) => !keysToRemove.includes(menuKey));
const newConfig = {
...remainingConfig,
[sdb.menu]: {
...menuConfig,
params: {
...menuConfig.params,
menu,
}
}
};
// ...then use whatever mechanism is in your environment to replace `remainingConfig`
// with `newConfig`...
}
請注意,我們如何在每個級別通過擴展語法制作結構的淺表副本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.