我想從數組中刪除特定的項目在javascript中,但似乎無法得到[數組] .splice函數上班。
此代碼用於檢查SVG對象是否與另一個對象(對於遊戲)發生衝突。總會有3個對象與玩家相交,所以我希望從列表中移除這些對象。
到目前爲止我的代碼是:javascript [數組] .splice不工作(「未捕獲TypeError:collisions.splice不是函數」)
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不是函數」,我不明白爲什麼(或者如何解決它)。
您的衝突不是一個數組。檢查'typeof collisions.construcotr =='array''並查看它給出的結果 – Dellirium
'getIntersectionList()'返回一個不是數組的節點列表。像'[... collisions] .splice()'一樣可以使它工作。 – Redu
@Redu什麼樣的轉換是'[.. item]'你可以給一些鏈接/文檔,需要詳細看看! o.0 – Dellirium