![](/img/trans.png)
[英]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.