- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我跑了 some tests ,以及 jQuery inArray()
的数据点比简单的循环慢得多。
而 array.indexOf()
甚至没有参加测试,因为我之前做过其他测试,而且它的表现更差。
必须有充分的理由不使用它:
for(var i=0,len=arr.length,rtn=-1;i<len;i++){
if(arr[i]==="arritem"){
rtn=i;
break;
}
}
最佳答案
如果您要测试 jQuery 的 inArray
,请实际测试 jQuery 的 inArray
,并将苹果与苹果进行比较(调用函数与调用函数——您可以编写在性能非常关键的地方循环内联,但它不会是你的默认 Action ,大概):http://jsperf.com/inarraytest/3
准备 HTML:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
准备代码:
var arr=[0,1,2,3,4,5,6,7,8,9];
function arrayLoop(elem, array, i) {
var len = array.length;
i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
for ( ; i < len; i++ ) {
// Skip accessing in sparse arrays
if ( i in array && array[ i ] === elem ) {
return i;
}
}
return -1;
}
测试:
// jQuery.inArray last
var rtn=jQuery.inArray(9,arr);
// arrayLoop last
var rtn = arrayLoop(9,arr);
// jQuery.inArray middle
var rtn=jQuery.inArray(4,arr);
// arrayLoop middle
var rtn = arrayLoop(4,arr);
// jQuery.inArray first
var rtn=jQuery.inArray(0,arr);
// arrayLoop first
var rtn = arrayLoop(0,arr);
Chrome(具有 indexOf
)的结果是 jQuery.inArray
总是比 arrayLoop
快(在第一对测试用例中,我们正在搜索最后一个条目,戏剧性地如此)。
在 IE6(没有 indexOf
)上的结果:jQuery.inArray
总是比 arrayLoop
快,尽管并不奇怪(因为它必须做基本相同的工作)——奇怪的是,在我们搜索数组中的第一个条目的情况下,在这种情况下它要快得多。
关于javascript - 为什么 jQuery inArray 太慢了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8858650/
我在这里做错了什么?我的想法是,我可以将箭头按键与其他任何按键分开,但每次按键都会触发警报“您按下了箭头键”。任何帮助都会很棒! jsFiddle此处或: $('#foo').keyup(func
我目前正在开发一个函数,该函数应该禁用 jQuery 日期选择器中的周末和节假日。 我的函数看起来像这样 function calendarDateDisabled(date) {
我有这个代码: var myRSS =[]; function rssReader() { $.getJSON('bbc.php', function(data){ conso
我正在尝试检查数组中是否存在“4”,因此我使用 inArray。尽管“4”确实存在,但它一直说“它不存在”。这是其中的一部分: var sp_20 = ["4"]; f
我想检查我的行 ID 是否在数组中。如果我为 myindex 设置一个固定值,它可以工作,但由于它低于它,它总是返回 FALSE 值。谢谢。 $('#stripeMeSubSubCat tr').ea
我正在使用 .inArray() 检查数组中是否有“0”值,然后返回 false; 或在存在零时中断该函数。 这是我当前使用的代码: $(document).ready(function() {
让我尽力解释一下我在这里所做的事情。然后问如何解决这个难题的最后一 block 。 我有一个图像列表,当单击该列表时,图像上的 ID 从父元素中获取,并将该 id 添加到名为 order[] 的数组中
我有一个现有表,我想防止将相同的数据添加到现有表中。 我的问题:为什么当我点击“创建新用户”按钮时,结果总是提示“未找到”? 代码如下:HTML: Existing Users:
我正在尝试使用带有 $.inArray 的循环。基本上,我有循环遍历的信息,我需要获取一部分信息并将其添加到数组中。如果该区域中已经存在该信息(有重复、三个相同、四个相同等,一直到相同数据的 12 个
我有一个功能只能输入数字,但我想扩展它,这样它就不会在箭头、退格键和删除键等键输入时触发。我将这些键码添加到数组中,并将 event.keyCode 传递给函数。 例如,退格键的键码是 8,即使它在我
如何检查我的数组中是否包含字符串?这是我将数组放在一起的方式... // get the select var $dd = $('#product-variants'); if ($dd.len
我有一个数组。 var arr =[23,45,78,89]; 我想从这个数组中删除 78,所以我正在使用 arr.splice($.inArray(78), 1); 但这总是删除最后一个元素 89
我有一个二维数组。例如 var bruecken = [[1,2],[3,4]]; 现在我正在尝试测试,如果一个子数组存在: console.log(jQuery.inArray([1,2], bru
我有一个这样的 json 文件: { items: [{ id: 1, catalog: { supplier: {
假设在 jQuery 中我将 DOM 元素放入一个数组中, var elemarray = []; elemarray.push($('#elem1')); elemarray.push($('#el
我需要一个 javascript 函数,它可以接受一个字符串和一个数组,如果该字符串在数组中则返回 true.. function inArray(str, arr){ ... } 警告:它
我不明白为什么当最后一个产品 ID 显然在数组中时,我的最后一个产品索引总是得到 -1! var lastProductID = 6758; var allProductIDs = [5410, 83
我正在尝试使用 inarray 但它总是返回 true?有任何想法吗? (所有 li 均已显示) $("#select-by-color-list li").hide(); // get the se
我有一个使用 JSON.parse 从字符串转换而来的数组: list = "625, 632"; list = JSON.parse("["+items_string+"]"); 其中包含
这个问题已经有答案了: Any way to make jQuery.inArray() case insensitive? (8 个回答) 已关闭 5 年前。 我有一个带有 JavaScript 的
我是一名优秀的程序员,十分优秀!