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%,这会回答你的问题,因为至少我不清楚。
如果您想删除整个元素,但担心在实际拼接数组之前创建正确的索引,那么应该使用
请参见下面的代码:
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.