您的位置:首页 > 其它

Array indexOf and lastIndexOf method

2013-05-09 22:56 232 查看
参见https://developer.mozilla.org/en-US/docs/JavaScript/Reference/global_objects/array/indexof

array.indexOf(searchElement[, fromIndex])

接受一个搜索值(searchElement),将其与数组(array)中的每个元素比较。如果找到该值,返回表示该数组元素的一个索引。如果没有找到,返回-1。

由于IE8不支持indexof,Mozilla针对这一函数的解决方案:

if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function (searchElement , fromIndex ) {
"use strict";
if (this == null) {
throw new TypeError();
}
var t = Object(this);
var len = t.length >>> 0;
if (len === 0) {
return -1;
}
var n = 0;
if (arguments.length > 1) {
n = Number(arguments[1]);
if (n != n) { // shortcut for verifying if it's NaN
n = 0;
} else if (n != 0 && n != Infinity && n != -Infinity) {
n = (n > 0 || -1) * Math.floor(Math.abs(n));
}
}
if (n >= len) {
return -1;
}
var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);
for (; k < len; k++) {
if (k in t && t[k] === searchElement) {
return k;
}
}
return -1;
}
}

var array = [2, 5, 9];
var index = array.indexOf(5); // index is assigned 0
alert(index);
//index = array.indexOf(7); // index is assigned -1


array.lastIndexOf(searchElement[, fromIndex]);

if (!Array.prototype.lastIndexOf)
{
Array.prototype.lastIndexOf = function(searchElement /*, fromIndex*/)
{
"use strict";

if (this == null)
throw new TypeError();

var t = Object(this);
var len = t.length >>> 0;
if (len === 0)
return -1;

var n = len;
if (arguments.length > 1)
{
n = Number(arguments[1]);
if (n != n)
n = 0;
else if (n != 0 && n != (1 / 0) && n != -(1 / 0))
n = (n > 0 || -1) * Math.floor(Math.abs(n));
}

var k = n >= 0
? Math.min(n, len - 1)
: len - Math.abs(n);

for (; k >= 0; k--)
{
if (k in t && t[k] === searchElement)
return k;
}
return -1;
};
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐