如何在JavaScript嵌套对象数组中查找指定id的索引并删除对应元素
问题原因
Array.forEach()方法本身没有返回值,你尝试用它接收findIndex的返回值,自然只能拿到undefined- 即使拿到了索引,你直接对所有dish的
foodItems执行splice操作逻辑错误:ID唯一对应某一个菜系下的菜品,直接删除所有菜系对应下标的元素会出现误删
正确实现代码
const removeId = (targetId) => { // 遍历所有菜系分类 for (const dish of dishes) { // 查找当前分类下是否有匹配ID的菜品 const targetIndex = dish.foodItems.findIndex(item => item.id === targetId) // 找到匹配项后删除,直接返回结果 if (targetIndex !== -1) { dish.foodItems.splice(targetIndex, 1) return true } } // 所有分类下都没有找到对应ID的菜品 return false }
使用示例
console.log(removeId('2')) // 返回true,中餐分类下的Fried rice被移除 console.log(removeId('999')) // 返回false,无匹配ID的菜品
内容的提问来源于stack exchange,提问作者sidzama
相关产品推荐
相关产品推荐

