查找要删除的数组中的特定对象

时间:2016-01-09 04:17:06

标签: javascript arrays object

我有一个数据数组,用于存储具有函数和其他此类信息的对象。我将这些对象推送到我的绘图函数执行的函数。

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

#----------------
#input variables
#----------------
#input_filename 
#png_filename


#----------------
# Sample Command: 
# 
#   gnuplot -e "input_filename='test.csv'" -e "png_filename='test.png'" gnuplotMultiSample_A.plt
#
#----------------



#----------------
# Code Starts
#----------------

reset

set datafile separator ","
set term png
set output png_filename  

set size 1,2
set terminal png size 2560,1920

    set ytics nomirror
    set y2tics


    set multiplot layout 4,2 columnsfirst title png_filename

        set style line 1 lc rgb 'red' lt 3 
        set style line 2 lc rgb 'blue' lt 2 lw 2
        set style line 3 lc rgb 'green' lt 1 
        set style line 4 lc rgb 'black' lt 0 


        unset grid
        #set grid xtics ytics y2tics lt 0  lc rgb "#880000"
        set grid xtics ytics y2tics ls 4

        plot input_filename using 11:12 with lines axes x1y1 ls 1 title 'Actual', \
                                    input_filename using 11:1 with lines axes x1y2 lc rgb 'green' title 'Plot-1'  

        plot input_filename using 11:12 with lines axes x1y1 ls 1 title 'Actual', \
                                    input_filename using 11:3 with lines axes x1y2 ls 2 title 'Plot-2'  

        plot input_filename using 11:12 with lines axes x1y1 ls 1 title 'Actual', \
                                    input_filename using 11:5 with lines axes x1y2 ls 3 title 'Plot-3'  

        plot input_filename using 11:12 with lines axes x1y1 ls 1 title 'Actual', \
                                    input_filename using 11:7 with lines axes x1y2 ls 4 title 'Plot-4'  



        plot input_filename using 11:12 with lines axes x1y1 ls 1 title 'Actual', \
                                    input_filename using 11:9 with lines axes x1y2 lc rgb 'green' title 'Plot-5'  

        plot input_filename using 11:12 with lines axes x1y1 ls 1 title 'Actual', \
                                    input_filename using 11:11 with lines axes x1y2 lc rgb 'green' title 'Plot-6'  

        plot input_filename using 11:12 with lines axes x1y1 ls 1 title 'Actual', \
                                    input_filename using 11:1 with lines axes x1y2 lc rgb 'green' title 'Plot-7'  

        plot input_filename using 11:12 with lines axes x1y1 ls 1 title 'Actual', \
                                    input_filename using 11:3 with lines axes x1y2 lc rgb 'green' title 'Plot-8'  

        unset grid

    unset multiplot

剪接:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
的indexOf:
http://www.w3schools.com/jsref/jsref_indexof_array.asp

答案 1 :(得分:0)

我不是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。