使用map()迭代并使用没有索引的splice删除对象

时间:2018-03-29 08:36:34

标签: javascript splice

我可以删除带有拼接的元素,但在map cicle中已经知道了。

if ($(this).hasClass("saveFavoriteMedia")) {
                    saveId = $(this).attr("data-id");
                    listFavoriteMedia.map(function (x) {
                        if (x.id == saveId) {
                            //delete x.id; // Work but not delete totaly elements
                            listFavoriteMedia.splice(index, x.id); //index in already know
                        }
                    });
                }

2 个答案:

答案 0 :(得分:1)

您可以使用过滤器来达到此目的;

 listFavoriteMedia = listFavoriteMedia.filter(function(x){
      if (x.id !== saveId) {
        return true;
      }
    });

答案 1 :(得分:0)

您可以使用map的回调函数的第二个参数 - index

listFavoriteMedia.map(function (x,i) { //i is the index
    if (x.id == saveId) {
       listFavoriteMedia.splice(i, 1);  //observe that 1 is given as second parameter of splice to give count of items to be deleted
    }
});

如果id是唯一的,请使用findIndex

var index = listFavoriteMedia.findIndex( s => s.id == saveId );
listFavoriteMedia.splice(index, 1); 

如果您的浏览器不支持箭头功能,那么

var index = listFavoriteMedia.findIndex( function(s){ return s.id == saveId });
listFavoriteMedia.splice(index, 1);