Array没有indexOf方法,这样在一个数组中查找某个元素的索引时比较麻烦,为了调用方便,于是通过prototype原型扩展了Array.prototype.indexOf():
Array.prototype.indexOf = function(item) {
for (var i = 0; i < this.length; i++) {
if (this[i] == item)
return i;
}
return -1;
}
但是由于Array在javascript1.6版本已经支持Array.indexOf(),所以高级浏览器ff、chrome等认为是自己原生支持的固有的属性。而IE8以下认为indexOf是“用户定义的属性”,这就出现了问题。 所以for in遍历数组元素的时候,要利用到hasOwnProperty.详见:
http://wangjingyi.iteye.com/blog/2038264
indexOf方法使用
全等(===)来判断一个元素是否符合搜索。搜索字符串及数字可能没有问题,但是搜索对象和数组可能会有问题。
// 可以判断两个对象的属性和值是否相等,但是不等判断两个对象是否相等,除非它们指向相同的地址
var e1 = {
"name": "wjy",
"blog": "http://www.wangjingyi.iteye.com"
},
e2 = {
"name": "zyc",
"blog": "http://www.zhangyaochun.iteye.com"
},
arr = [e1, e2],
index = arr.indexOf(e1);
console.log(index);//Outputs: 0
Array.prototype.indexOf()方法是在
ES5规范中添加的,在
IE8及以下浏览器不支持,可以使用下面的Polyfill或者一些封装库Underscore or Lo-Dash来兼容:
Array.prototype.indexOf = Array.prototype.indexOf || function (searchElement, fromIndex) {
if ( this === undefined || this === null ) {
throw new TypeError( '"this" is null or not defined' );
}
var length = this.length >>> 0; // Hack to convert object.length to a UInt32
fromIndex = +fromIndex || 0;
if (Math.abs(fromIndex) === Infinity) {
fromIndex = 0;
}
if (fromIndex < 0) {
fromIndex += length;
if (fromIndex < 0) {
fromIndex = 0;
}
}
for (; fromIndex < length; fromIndex++) {
if (this[fromIndex] === searchElement) {
return fromIndex;
}
}
return -1;
};
参考:
http://www.kwstu.com/ArticleView/manong_201411071635191494
http://www.jb51.net/article/35963.htm
分享到:
相关推荐
array.prototype.indexof 符合ES2015规范的shim / polyfill / replacement的Array.prototype.indexof ,可工作到ES3。 该软件包实现了接口。 它可以在ES3支持的环境中工作并符合。 因为Array.prototype.indexOf...
在讨论如何解决遍历时Array.indexOf产生性能问题之前,先需要了解Array.indexOf方法的工作原理及其在JavaScript中的重要性。Array.indexOf是JavaScript数组对象的一个方法,用于确定某个特定元素在数组中的位置,...
Array没有indexOf方法,这样在一个数组中查找某个元素的索引时比较麻烦,为了调用方便,于是通过prototype原型扩展了Array.prototype.indexOf(),这样用起来就比较方便了。但是这个自定义的indexOf在对数组进行遍历...
这段代码首先检查Array.prototype中是否已经存在indexOf()方法,如果不存在(即为undefined),则通过函数赋值的方式向Array.prototype添加一个新的indexOf()方法。这是利用了JavaScript中函数也是对象的特性,以及...
The program next reads in an index k from the user, then calls a method readValue(int [ ] a, int k) that would return the value of a[k]. The main program displays the value a[k]. If the index is out ...
为了解决这个问题,开发者通常会选择扩展Array原型(prototype),添加indexOf方法。Array.prototype是所有数组对象的原型对象,向这个原型对象添加方法,所有数组实例都会继承这个新方法。这样,我们就可以很方便地...
array.indexOf(‘REG') // 0 array.indexOf(‘R') // -1 array.indexOf('2018′) // 1 array.indexOf(2018) // -1 arr.indexOf(‘orange’) 输出 0 因为 ‘orange’ 是数组的第 0 个元素,匹配到并返回下标。 ...
Array.prototype.indexOf的更强大版本 安装 $ npm install array-index-of 例子 var indexOf = require ( 'array-index-of' ) ; var index = indexOf ( [ 1 , 2 , 3 ] , 2 ) ; // 1 var index2 = indexOf ( [ { a ...
在JavaScript编程语言中,`Array.prototype.indexOf()`是一个非常重要的数组方法。它用于查找指定元素在数组中的索引,如果找到则返回该元素的索引,否则返回-1。这个方法对于处理数组数据非常实用,尤其是在需要...
ECMAScript 5 Array.prototype.indexOf 的 Shim。 基于。 安装 通过: component install gamtiq/array-indexof-shim 用法 var indexOf = require ( "array-indexof-shim" ) ; ... var nIndex1 = someArray . ...
IndexOf是Array类提供的一个方法,它用于查找数组中某个元素的索引位置。其工作原理是从数组的开头向后查找,如果找到了指定的元素,就返回该元素在数组中的位置(即索引),如果没有找到,则返回-1。 IndexOf方法...
6. **索引查找**:`indexOf()` 方法查找元素在数组中的索引,`Ext.Array.indexOf(array, item)` 7. **排序**:`sort()` 方法对数组进行排序,可以自定义比较函数,如 `array.sort(function(a, b){ return a - b; })...
array.indexOf(element[, fromIndex]) ``` - `element`: 需要在数组中查找的元素。 - `fromIndex`: 可选参数,表示搜索的起始位置,默认为0。 **示例**: ```javascript let arr = [1, 2, 3, 4, 5]; console.log...
`indexOf`是JavaScript内置数组方法之一,用于查找指定元素在数组中的索引,如果找不到则返回-1。 以下是一个简单的`indexOf`实现,它是通过在`Array.prototype`上添加一个新的函数来完成的: ```javascript Array...
该polyfill通过扩展Array.prototype来添加indexOf方法,这样即使在不支持该方法的浏览器中,也可以调用indexOf()进行元素搜索。 具体的polyfill代码如下: ```javascript if (!Array.prototype.indexOf) { Array....