javascript - 使用reactjs提交时无法从对象中删除数组和属性(多个)
问题描述
我的目标是从对象中删除一个数组 [] 和一些属性。我可以通过方法从对象中删除一个属性,delete
但是当我想删除多个属性时,它会显示如下错误The operand of a 'delete' operator must be optional.
Experience
数组有一个对象,它可能有多个对象。
experience: [
{
organisation: "",
id: "",
from: "",
to: "",
skills: [],
achievements: 0,
},
{
organisationName: "",
id: "",
from: "",
to: "",
skills: [],
achievements: 0,
}
]
这是代码:
let skillsArray = this.state.experiences.map((item) => {
let newItem = { ...item }
delete newItem.skills;
delete newItem.achievements;
return newItem;
})
任何人都可以在这个查询中帮助我吗?
解决方案
这是 TypeScript 编译器错误,而不是 JavaScript 运行时错误。a 的形状与 original 的形状newItem
相同item
,并且原始item
声音具有 requiredskills
和achievements
properties,因此delete
不允许通过删除它们(因为现有对象将与键入的形状不匹配)。
出于类似的原因,以下情况也是不允许的:
const obj = {
foo: 'val1',
bar: 'val2',
};
delete obj.foo;
(因为 的类型obj
,如果被删除{ foo: string; bar: string; }
就会不正确)foo
您可以改为解构不需要的属性,并使用 rest 语法来收集新对象的属性:
let skillsArray = this.state.experiences.map((item) => {
const { skills, achievements, ...newItem } = item;
return newItem;
})
推荐阅读
- python - Pandas DF 从长到宽
- python - 无法导入 win32crypt
- amazon-web-services - ec2 弹性推理不可及
- excel - 如何从给定数字中选择几个数字
- amazon-web-services - 基于 Serverless 框架的可独立部署微服务的样板
- npm - 带有标头 X-Content-Type-Options 的 npm http-server
- python - 在 Django 模板中使用 Vue.js
- amazon-web-services - AWS X-RAY [错误] 发送分段批处理失败,原因是:NoCredentialProviders:链中没有有效的提供程序。已弃用
- python - 如何使用 has_object_permission 检查用户是否可以在基于函数的视图中访问对象
- python - 如何让我的播放器与我的平台底部发生碰撞