【问题标题】:Finding specific objects in array to remove [duplicate]在数组中查找特定对象以删除[重复]
【发布时间】:2016-04-13 21:03:03
【问题描述】:

我有一个数据数组,其中存储了一个包含函数和其他此类信息的对象。我将这些对象推送到函数中,以便我的绘图函数执行。

但我不知道如何在数组中找到特定对象以将其删除并停止绘制它。

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

var data  = {
            'fnc':function(){ 
                      updatePosition(spriteID); 
                      drawSprite(spriteID); 
             },
             'something':'here'
            };

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

这个数组中有很多函数,它们会根据我想要绘制的内容动态推送。

在这种情况下,找到这些对象之一的索引并将其从数组中删除的最佳方法是什么?

【问题讨论】:

  • 你想通过type属性在你的数组中找到一个对象吗?
  • 不,整个对象作为一个整体,不仅仅是type. That type`与我的绘图功能有关。编辑代码以避免混淆:)
  • 为什么 drawOrder.indexOf(objYouPush) 在你的情况下不起作用?
  • 对不起,我不明白你的问题。如果你想要the best way to find the index,就做drawOrder[n].fnc()
  • @Daniel_L 但n 暗示我已经知道索引,在这种情况下我可以拼接它。

标签: javascript arrays object


【解决方案1】:

indexOf() 返回您正在搜索的元素的数组中的索引,或 -1。所以你可以这样做:

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
indexOf:
http://www.w3schools.com/jsref/jsref_indexof_array.asp

【讨论】:

    【解决方案2】:

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

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

    请看下面的代码:

    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);

    正如documentation 报道的那样:

    indexOf() 方法返回可以在数组中找到给定元素的第一个索引,如果不存在,则返回 -1。

    【讨论】:

      猜你喜欢
      • 2019-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      • 2021-08-20
      • 2021-02-16
      • 2019-08-23
      • 2018-08-13
      相关资源
      最近更新 更多