`
zhangyaochun
  • 浏览: 2621124 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

jQuery源码浅谈系列---$.inArray

阅读更多

 

之所以谈论一下这个api,是因为我以前在设计我自己的凤凰组件库的时候写过一个array的indexOf,然后我也写了一个JavaScript1.6新特性里面介绍的7个array扩展的api.所以回归到jQuery的源码再来看,可能就很简单了。

 

jQuery.inArray(value,array)

 

           确认第一个参数在数组中的位置,从0开始计数(如果没有就返回-1

 

 

  • value  ----------用于在数组中查找的项是否存在
  • array   ----------{Array}

源码展示:

 

/*@param elem 用于在数组中查找的项
@param array 待查找的数组
*/
inArray: function(elem,array){
        //判断浏览器是否支持javascript1.6新增的array原生的indexOf
         if(array.indexOf){
                   return array.indexOf(elem);
          }
         var i,
               len = array.length;
         //按照array的长度进行遍查找
         for(i = 0,i<len;i++){
               if(array[i] === elem ){
                     //如果array[i]的元素和elem相同
                     return i;
                }
         }
         //没有找到的话就返回-1
         return -1;
}
 

 

 

 

 

//简单测试一下
var arr = [0,1,2];
console.log($.inArray(0,arr));   //0
console.log($.inArray('a',arr));  //-1
 
总结一下:其实无论我们在编写自己的lib还是在一般的小项目里面,你如果看过hax的api设计讲座的话你会知道扩展Object.prototype的做法是不推荐的,或者尽量少用的。很多人在以前的项目里面自己在Array.prototype扩展了类似的indexOf,当然在IE8和以下的版本可能还是走你扩展的这个api,但是像ff等支持的高于JavaScript1.6版本以上的浏览器,它会去找原生的indexOf

而且个人觉得从代码优化角度来讲浏览器原生支持的似乎更快一点。如果你没有熟悉过JavaScript1.6等特性的新增情况也可以关注一下我后面推出的这个系列

3
1
分享到:
评论

相关推荐

    jquery插件jquery-ui-1.8.2.custom.min.js

    《jQuery UI与jQuery插件深度解析——以jquery-ui-1.8.2.custom.min.js为例》 在Web开发领域,jQuery库以其简洁易用的API和强大的功能深受开发者喜爱。而jQuery UI作为jQuery的一个扩展,提供了丰富的用户界面组件...

    jquery.datepicker-zh-CN.js

    jquery datepicker 的中文包 调用方法 &lt;script src="./public/js/jquery-ui-1.10.3.min.js"&gt; &lt;script src="./public/js/jquery.datepicker-zh-CN.js"&gt;&lt;/script&gt; &lt;link href="./public/css/jqueryui/jquery-ui-...

    插件jquery-ui-timepicker-addon.js

    jquery插件jquery-ui-timepicker-addon.j

    jquery-ui-1.8.16.custom.min.js/jquery-ui-1.8.16.custom.css

    **jQuery UI** 是一个强大的JavaScript库,用于构建用户界面,它基于流行的jQuery库。这个压缩包包含两个关键文件:`jquery-ui-1.8.16.custom.min.js` 和 `jquery-ui-1.8.16.custom.css`,这些都是jQuery UI的特定...

    jquery-ui-1.9.2.custom.min.js

    1.9.2是jQuery UI历史上的一个稳定版本,它包含了一系列修复和改进,确保了与当时jQuery库的兼容性和稳定性。每个版本更新都可能引入新的功能、修复已知问题或者优化性能,所以选择合适的版本对于项目是至关重要的。...

    jquery-ui-1.8.16.custom.min.js

    jquery-ui-1.8.16.custom.min.js

    jquery-migrate-1.2.1.min.js

    jquery-migrate-1.2.1.min.js 在网上下载一些 js 插件使用的时候,经常出现这种情况。但是更换低版本 jquery,比如 使用 1.7 版本的 jquery 却不会报错,能正常使用。 经过一番搜索,发现是因为高版本(1.9版本以后)...

    jquery-1.12.4-jquery.min.js.zip

    《jQuery 1.12.4.min.js:前端开发中的基石》 在现代网页开发中,jQuery 是一个不可或缺的库,它极大地简化了JavaScript的使用,使得DOM操作、事件处理、动画效果以及Ajax交互变得更加简单易行。"jquery-1.12.4-...

    jquery-ui-1.10.3.min.js

    jquery-ui-1.10.3.min.js

    jquery-migrate-3.0.0.min.js 含源码

    jquery-migrate-3.0.0.min.js 含源码 包含以下文件: jquery-migrate-3.0.0.min.js jquery-migrate-3.0.0.js // 这个是源码哦 截至2017.11.21, jQuery3.x 最新最稳定版本

    jquery-ui-1.7.2.custom.min.js

    jquery-ui-1.7.2.custom.min.js 用于提供实现jquery特效的js

    jQuery版本迁移辅助插件jquery-migrate-1.2.1.min.js

    jQuery版本迁移辅助插件,如果您使用的低版本jQuery改为高版本后出现错误,可以试试这个插件。用来检测和恢复在jQuery1.9版本中已删除或已过时的API。jquery-migrate-1.2.1.js,jquery-migrate-1.2.1.min.js

    jquery-ui-1.10.4.custom.min.js

    java

    jquery-3.7.0.min.js(jQuery下载)

    jquery-3.7.0.min.js(jQuery下载)jquery-3.7.0.min.js(jQuery下载)jquery-3.7.0.min.js(jQuery下载)jquery-3.7.0.min.js(jQuery下载)jquery-3.7.0.min.js(jQuery下载)jquery-3.7.0.min.js(jQuery下载)...

    解决JQurey跨域问题$.get|$.post|$.getJSON等等统统可跨域

    在Web开发中,由于浏览器的同源策略限制,JavaScript无法直接访问不同源的资源,这在使用jQuery进行AJAX操作时会遇到问题。本篇将详细介绍如何解决jQuery跨域问题,涉及的方法包括$.get、$.post和$.getJSON等。 ...

    jquery-ui-1.10.4.min.js

    jquery-ui-1.10.4.min.js下载

    最新版JQuery-jquery-3.2.1.min.js

    jQuery 3.x 系列是继1.x和2.x后的又一重大更新,它主要关注性能优化、API清理以及对现代浏览器的更好支持。`3.2.1`作为其中的一个小版本更新,主要关注修复已知问题和改进兼容性。 ### 2. jQuery.holdReady(hold) ...

    jquery-migrate-3.0.0.min.js+js+jquery+兼容

    jQuery-Migrate 是一个过渡插件让你在原来代码上升级 jQuery 不用修改代码。cdn:https://code.jquery.com/jquery-migrate-3.0.0.min.js

Global site tag (gtag.js) - Google Analytics