如何同时匹配id与value键值后删除数组中对应的对象
错误原因
你原有代码失效的核心原因是 Array.indexOf() 的使用逻辑不符合需求:该方法只能匹配完全相等的基本类型值、或是引用地址完全一致的对象,且第二个参数代表的是查找的起始下标,并不是你需要的匹配条件,自然无法定位到同时满足id和value匹配的数组项。
解决方案
方案1:生成新数组(推荐,无副作用)
使用Array.filter()过滤数组,直接保留所有不满足匹配条件的项即可:
// 你从复选框拿到的目标id和value const targetId = 146 const targetValue = '$ 679.200' // 过滤后得到的新数组就是处理后的结果 obj = obj.filter(item => !(item.id === targetId && item.value === targetValue))
方案2:操作原数组
如果业务要求必须修改原数组而非生成新数组,使用Array.findIndex()定位符合条件的下标再删除即可,注意要加下标合法性判断,避免未匹配到对应项时误删其他元素:
const targetId = 146 const targetValue = '$ 679.200' const matchIndex = obj.findIndex(item => item.id === targetId && item.value === targetValue) if (matchIndex !== -1) { obj.splice(matchIndex, 1) }
内容的提问来源于stack exchange,提问作者Alexis
相关产品推荐
相关产品推荐

