js 判断变量是否有值返回bool_javascript中如何快速判断某个变量是否在一个数组里...

答案有三:1. jQuery, $.inArray(x, arr); 2. 自製, in_array(x, arr); 3. arr.indexOf(x)

貼上代碼

$.inArray:

inArray: function( elem, arr, i ) {

var len;

if ( arr ) {

if ( indexOf ) {

return indexOf.call( arr, elem, i );

}

len = arr.length;

i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;

for ( ; i < len; i++ ) {

// Skip accessing in sparse arrays

if ( i in arr && arr[ i ] === elem ) {

return i;

}

}

}

return -1;

},

自製 in_array:

function in_array(needle, haystack) {

var i = 0, n = haystack.length;

for (;i < n;++i)

if (haystack[i] === needle)

return true;

return false;

}

indexOf:

(arr.indexOf(x) !== -1)

總結

經測試,論多瀏覽器多數據類型的綜合性能,傳統的循環效率最高(前提是像我一樣,優化好代碼)

除 chrome 39 x64 ,純數字類型外,indexOf 的效率都不是最好的。

some + 匿名函數的效率實在太低了,不認直視,故不再考慮。

jQuery 因爲做了額外工作(從註釋看是爲了優化)反而降低了效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值