有没有别的方法可以不使用for循环从数组中删除一个元素?

Is there another way to remove an element from an array without a for loop?

本文关键字:删除 数组 元素 一个 循环 方法 for 有没有      更新时间:2023-09-26

我正在使用这个代码:

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

您可以将元素存储到一个以key作为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),这更好(考虑它更快)。

就用

var array = [2, 5, 9];
array.indexOf(2);
使用
array.splice(index, 1);

有另一种方法,但它是基于Jquery的… JQUERY美元.inArray

$.inArray( ele, array );

可以使用map函数

var pos = self.contents.map(function (e){
    return e.contentId;
}).indexOf(self.content.contentId);
self.contents.splice(pos, 1);