JavaScript数组检索指定元素
JavaScript数组检索指定元素属于前端实例代码,有关更多实例代码大家可以查看。
当前实现此功能非常简单,ES5已经提供相关方法。
(1)indexOf方法参阅JavaScript indexOf()一章节。
(2).lastindexOf方法参阅JavaScript lastIndexOf()一章节。
但是上面两个方法都存在的浏览器兼容问题,也就是IE9以下浏览器并不支持。
下面看一个模拟实现的效果,代码如下:
if (!Array.prototype.indexOf) { Array.prototype.indexOf = function (elt/*, from*/) { var len = this.length > 0; var from = Number(arguments[1]) || 0; from = (from < 0) ? Math.ceil(from) : Math.floor(from); if (from < 0) { from += len; } for (; from < len; from++) { if (from in this && this[from] === elt) { return from; } } return -1; } } var arr=["前端教程网","青岛市南区",3,"css教程","pipipi.net"]; console.log(arr.indexOf("前端教程网"));
上面的代码实现了我们的要求,下面介绍一下它实现过程。
一.代码注释:
(1).if (!Array.prototype.indexOf) ,判断当前浏览器是否支持indexOf()方法,如果不支持就需要模拟实现。
(2).Array.prototype.indexOf = function (elt/*, from*/) {},为数组对象原型添加一个indexOf()方法,第一个参数是要检索的元素,第二个参数可以省略,用来规定从哪个位置开始检索。
(3).var len = this.length,获取数组元素的个数。
(4).var from = Number(arguments[1]) || 0,如果规定的第二个参数,并且能够转换成数字,那么就从指定的位置开始检索,否则就从第一个元素开始检索。
(5).from = (from < 0) ? Math.ceil(from) : Math.floor(from),如果from小于0,那么就进行上舍入操作,如果大于0,那么就进行下舍入操作。(6).if (from < 0) {
from += len;
},如果form小于0,那么就通过form+=len计算出正向的索引值。
(7).for (; from < len; from++) {
if (from in this && this[from] === elt) {
return from;
}
},通过for循环进行遍历操作。
数组的索引可以看做对象的属性,所以from in this,就是判断数组是否有次索引。
this[from] === elt,判断索引下是否有孩子定的元素。
(8).return -1,如果没有那么就返回-1。
二.相关阅读:
(1).prototype参阅JavaScript prototype原型一章节。
(2).arguments参阅JavaScript arguments一章节。
(3).Math.ceil方法参阅JavaScript Math.ceil()一章节。
(4).Math.floor方法参阅JavaScript Math.floor()一章节。
JavaScript数组检索指定元素,这样的场景在实际项目中还是用的比较多的,关于JavaScript数组检索指定元素就介绍到这了。