如何从对象数组中根据id删除单个对象?
问题解决:根据ID删除数组对象
报错翻译
未捕获的类型错误:无法读取未定义的属性(读取'findIndex')
错误原因
你写的myArray.value是错误用法——myArray是直接声明的普通数组,根本没有value属性,直接调用myArray.findIndex()即可。而且当前代码仅完成了查找索引的操作,并未执行实际删除逻辑。
两种可行实现方案
方案一:直接修改原数组(使用splice)
此方法会直接改动原数组myArray:
const deleteObject = (id) => { // 找到对应ID元素的索引 const targetIndex = myArray.findIndex(item => item.id === id); // 确认找到元素后执行删除 if (targetIndex !== -1) { myArray.splice(targetIndex, 1); } } deleteObject(1632881);
方案二:返回新数组(使用filter)
此方法不修改原数组,返回剔除目标元素后的新数组,适合需要保留原数组的场景:
const deleteObject = (id) => { return myArray.filter(item => item.id !== id); } // 调用时接收新数组 const filteredArray = deleteObject(1632881);
额外提示
你转换数组的代码中,header: val.HOSPITAL_GROUP_ID和date: val.CREATED_DATE对应的字段在demoObject的子对象中不存在,最终会被赋值为undefined,如果是笔误请及时修正。
内容的提问来源于stack exchange,提问作者OLA
相关产品推荐
相关产品推荐

