关于javascript:查找要删除的数组中的特定对象

Finding specific objects in array to remove

本问题已经有最佳答案,请猛点这里访问。

我有一个数据数组,它用函数和其他类似信息存储一个对象。我将这些对象推送到函数以执行我的draw函数。

但是我不知道如何在数组中找到一个特定的对象来删除它,从而停止绘制它。

例如,我有一个这样的数组结构:

1
2
3
4
5
6
7
8
9
10
var data  = {
            'fnc':function(){
                      updatePosition(spriteID);
                      drawSprite(spriteID);
             },
             'something':'here'
            };

var drawOrder= [];
drawOrder.push(data);

这个数组中有许多函数,它们是动态推送的,这取决于我想要绘制什么。

在本例中,找到其中一个对象的索引并将其从数组中移除的最佳方法是什么?


index of()返回要搜索的元素数组中的索引,或-1。所以你可以这样做:

1
2
3
var index = drawOrder.indexOf("aKey");
if (index != -1)
    drawOrder.splice(index, 1);

剪接:https://developer.mozilla.org/en-us/docs/web/javascript/reference/global_objects/array/splice索引:http://www.w3schools.com/jsref/jsref_indexof_array.asp


我不是100%,这会回答你的问题,因为至少我不清楚。

如果您想删除整个元素,但担心在实际拼接数组之前创建正确的索引,那么应该使用Array.indexOF

请参见下面的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
var data  = {
            'fnc':function(){
                      updatePosition(spriteID);
                      drawSprite(spriteID);
             },
             'type':'aabb'
            };

var drawOrder= [];
drawOrder.push(data);
console.log(drawOrder);
drawOrder.splice(drawOrder.indexOf(data), 1);
console.log(drawOrder);

作为文件报告:

The indexOf() method returns the first index at which a given element can be found in the array, or -1 if it is not present.