Jquery是检查页面上是否存在项的最快方法
我正在做一个速度很重要的游戏。所以我想找到最快的方法来检查屏幕上是否有特定的图像Jquery是检查页面上是否存在项的最快方法,jquery,Jquery,我正在做一个速度很重要的游戏。所以我想找到最快的方法来检查屏幕上是否有特定的图像 var myimages = ["Afbeeldingen/ballonBlauw.png", "Afbeeldingen/ballonGeel.png", "Afbeeldingen/ballonOranje.png", "Afbeeldingen/ballonRoos.png", "Afbeeldingen/ball
var myimages = ["Afbeeldingen/ballonBlauw.png",
"Afbeeldingen/ballonGeel.png",
"Afbeeldingen/ballonOranje.png",
"Afbeeldingen/ballonRoos.png",
"Afbeeldingen/balloonGroen.png",
"Afbeeldingen/ballonRood.png"];
这些是我的图像,当添加一个新元素时,它会随机选择其中一个并将其设置为背景图像。我还有一个数组,用于跟踪页面上每个图像的数量:
var numberonscreen = [0,
0,
0,
0,
0,
0];
每次我添加一个元素时,它都会将+1添加到上面数组中的正确索引中
当一个元素被点击时,检查它所保存的图像并为正确的索引-1设置计数器的最佳方法是什么?我应该检查背景图像并与所有可能的图像进行比较,还是有更快的方法
感谢您,您可以添加一个带有图像索引的自定义属性,然后在需要检查图像时,获取该属性的值,然后减去数组中正确索引的计数。这样,您根本不需要枚举任何数组 比如:
$('.anImage').on('click', function() {
var index = $(this).attr('theArrayIndexOfTheImage');
numberonscreen[index]--;
});
一种可能性:
function handler() {
++numberonscreen[myimages.indexOf(this.getAttribute('src')];
}
使用nativeindexOf
应该比您创建的循环更快
但我建议使用对象来代替:
var numberonscreen = {};
for(var i=0, l=myimages.length; i<l; ++i) // Initialize
numberonscreen[myimages[i]] = 0;
function handler() {
++numberonscreen[this.getAttribute('src')];
}
var numberonscreen={};
对于(var i=0,l=myimages.length;如果速度很重要,我建议使用而不是jQuery。您可以使用图像索引添加自定义属性,然后在需要检查图像是哪个图像时,获取该属性的值,然后减去数组中正确索引的计数。尽管有可能,indexOf
enumeratesmyImages
。如果希望尽可能快地执行,则根本不需要枚举。您的第二个(也是推荐的解决方案)很好。