var listToDelete = ['abc', 'efg'];
var arrayOfObjects = [{id:'abc',name:'oh'}, // delete me
{id:'efg',name:'em'}, // delete me
{id:'hij',name:'ge'}] // all that should remain
如何通过匹配对象属性从数组中删除对象?
请只使用本机 JavaScript。
我在使用拼接时遇到问题,因为每次删除长度都会减少。
在原始索引上使用克隆和拼接仍然会给您带来长度减少的问题。
原文由 Dan Kanze 发布,翻译遵循 CC BY-SA 4.0 许可协议
我假设你使用了这样的
splice
?修复该错误所需要做的就是在下一次减少
i
,然后(并且向后循环也是一种选择):为避免线性时间删除,您可以编写要 保留 在数组上的数组元素:
为了避免现代运行时中的线性时间查找,您可以使用哈希集:
它可以包含在一个不错的功能中:
如果您不需要就地执行它,那就是
Array#filter
: