javascript - 还有另一种方法可以在没有 for 循环的情况下从数组中删除元素吗?

标签 javascript

我正在使用这段代码:

self.contents.forEach(function (elem, index) {
    if (elem['contentId'] === self.content.contentId)
        self.contents.splice(index, 1);
})

有了新的浏览器功能,有没有更简单的方法从 self.contents 中删除对象?有一个 contentId匹配self.content.contentId .

请注意,contents 数组中只有一个对象具有该 Id

最佳答案

您可以将您的元素存储到一个对象中,并将键作为它们的 ID,然后通过对其进行索引来检索它们:

//Procedure to add in the object, modify to meet your needs.
var storeObject = {};
storeObject[1] = elemWithID1;
storeObject[5] = elemWithID5;

然后,您可以:

elem = storeObject[self.content.contentId];

考虑到您在这种情况下实际使用哈希表,此映射的平均复杂度可能为 O(1),而仅通过迭代搜索的复杂度为 O(n),哪个更好(考虑它更快)。

关于javascript - 还有另一种方法可以在没有 for 循环的情况下从数组中删除元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31915572/

相关文章:

javascript - 使用 Javascript 检测 IE 中的高级隐私设置

javascript - WinJS gestureRecognizer - 如何捕获多个手势

javascript - 结果中的最小值 javascript

javascript - 如何在谷歌图表上的时间类型中添加空值

javascript - 执行动态添加的社交网络小部件

javascript - jQuery - onClick 在新页面中打开随机链接

javascript - 引用错误: $ is not defined issue

javascript - JQuery函数只允许文本框中的字母不起作用

javascript - 在多个页面上自动进行 javascript 和 html 测试

javascript - 谷歌地图的插值方法