javascript [array] .splice not working(“Uncaught TypeError:collisions.splice不是函数”)

时间:2016-08-17 10:24:55

标签: javascript arrays svg

我试图在javascript中从数组中删除特定项目,但似乎无法使[array] .splice函数正常工作。
此代码用于检查SVG对象是否与另一个(与游戏)发生冲突。总是期望玩家与之交叉的3个对象,所以我希望从列表中删除它们。
到目前为止我的代码是:

svg=document.getElementById("canvas");

function checkcollision(){
    var r0=document.getElementById("rhb1").getBoundingClientRect(), r1=svg.createSVGRect(); r1.x=r0.left; r1.y=r0.top; r1.width=r0.width; r1.height=r0.height;
    var collisions=svg.getIntersectionList(r1,null), len=collisions.length;
    console.log(collisions);
    for(i=len-1;i>=0;i--){
        if(collisions[i].id=="renclosure"||collisions[i].id=="cplayer"||collisions[i].id=="rhb1"){
            collisions.splice(i,1);
        }
    }
    console.log(collisions);
    if(collisions.length>0){
        return true;
    }
    else{
        return false;
    }
}

控制台为碰撞数组显示的示例是

[<rect id=​"renclosure" x=​"0" y=​"0" width=​"15360" height=​"8640" class=​"st0">​</rect>​, <circle id=​"cplayer" cx=​"960" cy=​"540" r=​"50" class=​"st1">​</circle>​, <rect id=​"rhb1" x=​"0" y=​"0" width=​"100" height=​"100" class=​"st2" transform=​"translate(910, 490)​ rotate(0 050 050)​">​</rect>​]

(直接复制)。
但是,Google Chrome每次都会抛出错误“Uncaught TypeError:collisions.splice不是函数”,我不明白为什么(或如何修复它)。

2 个答案:

答案 0 :(得分:3)

您的saveToSet(B b)不属于https://graph.facebook.com/v2.5/leadgen_id?access_token=xxxxxxxx

类型

尝试使用

collisions

Array怎么看这里Function.prototype.call

答案 1 :(得分:1)

根据https://developer.mozilla.org/en/docs/Web/API/SVGSVGElementgetIntersectionList的结果不是数组,而是NodeList

但是,您可以通过以下调用将NodeList转换为Arrayvar div_array = Array.prototype.slice.call(div_list); // converts NodeList to Array

有关此内容的更多信息:https://developer.mozilla.org/en-US/docs/Web/API/NodeList