gpt4 book ai didi

javascript - 使用此特定代码从另一个数组中删除一个数组

转载 作者:行者123 更新时间:2023-12-01 01:55:54 25 4
gpt4 key购买 nike

我有以下数组,其中包含其他数组(它们实际上是 html5 Canvas 的坐标)。

var crossesPos = [[317, 193], [110, 334], [390, 347], [281, 222], [307, 384], [329, 366], [230, 104], [276, 156], [173, 330], [227, 100], [397, 261], [341, 389], [233, 223], [261, 350], [267, 286]]

别说:

x = 317;
y = 193;

在下面的函数中,如何从 crossesPos 中删除数组 [317,193]?

function checkForCrosses(x,y){
var position;
jQuery.each(crossesPos, function(){
position = this;
if(x == position[0] && y == position[1]){
// how do I remove the array [317,193] from crossesPos?
}
});
}

泰!

最佳答案

使用以下代码从数组中拼接出精确的坐标。将此代码放入您的函数中。这比 JQuery 代码更高效。

纯 JavaScript

for(var i=0; i<crossesPos.length; i++)
{
if(crossesPos[i][0] === x)
if(crossesPos[i][1] === y)
{
crossesPos.splice(i,1);
break;
}
}
<小时/>

重要说明:如果要删除数组中所有匹配元素(而不仅仅是一个),则必须编辑代码,删除 break; 条件并反转循环:

for(var i=crossesPos.length-1; i>=0; i--)
{
if(crossesPos[i][0] === x)
if(crossesPos[i][1] === y) crossesPos.splice(i,1);
}
<小时/>

Working demo (with sexy output)

<小时/>

Performance comparison (test it yourself!)

这是(在撰写本文时)执行您的需求的最有效、最高效的方式,因为最接近的结果仍然比我的答案慢 90%

Performance comparison

关于javascript - 使用此特定代码从另一个数组中删除一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18211699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com