Javascript 1.6 数组新增方法介绍之 lastIndexOf()

自 FireFox 1.5 起,开始支持 JavaScript 1.6 , 在 JavaScript 1.6 里,javascript 数组增加了几个非常有用的方法:indexOf、lastIndexOf、every、 filter、 forEach、 map、 some,其中前两个可以归为元素定位方法,而后面的几个则可以归为迭代(iterative)方法,本站将发布一个系列文章对这几个新增方法进行介绍。

遗憾的是:这些新方法并非所有浏览器都支持,在这种情况下,我们就需要自己动手了,在这些介绍的文章中,我们同时提供了在不支持这些新特性的浏览器中的实现方法。

Javascript 1.6 数组新增方法介绍之 lastIndexOf() – 示例

语法

 
var index = array.lastIndexOf(searchElement[, fromIndex]);

参数说明

searchElement: 要搜索的元素

fromIndex : 开始搜索的位置,默认为数组的长度(length),在这样的情况下,将搜索所有的数组元素。如果传入的值大于或等于数组的范围(length),将搜索整个数组,如果传入的值小于 0 ,将返回 -1 ,在这样的情况下,搜索操作将不被执行。搜索是反方向进行的。

功能说明

比较 searchElement 和数组的每个元素是否绝对一致(===),当有元素符合条件时,返回当前元素的索引。如果没有发现,就直接返回 -1 。

在不支持此属性的浏览器下可以用下面的代码:

 
<script language="JavaScript" type="text/javascript">
 
// 说明:Javascript Array 的 lastIndexOf() 方法
// 整理:http://www.CodeBit.cn
// 来源:http://developer.mozilla.org
 
if (!Array.prototype.lastIndexOf)
{
	Array.prototype.lastIndexOf = function(elt /*, from*/)
	{
		var len = this.length;
 
		var from = Number(arguments[1]);
		if (isNaN(from))
		{
			from = len - 1;
		}
		else
		{
			from = (from < 0)
				? Math.ceil(from)
				: Math.floor(from);
			if (from < 0)
				from += len;
			else if (from >= len)
				from = len - 1;
		}
 
		for (; from > -1; from--)
		{
			if (from in this && this[from] === elt)
				return from;
		}
		return -1;
	};
}
</script>

《Javascript 1.6 数组新增方法介绍之 lastIndexOf()》有1个想法

  1. 看了您的实现方法之后,不太明白您这个地方为何如此实现呢?
    from = (from < 0)
    ? Math.ceil(from)
    : Math.floor(from);
    if (from = len)
    from = len – 1;

    本人稍微的修改了一下您的实现方法:
    if(Array.prototype.lastIndexOf){
    Array.prototype.lastIndexOf = function(element, from){
    var len = this.length;
    if(isNaN(from)){
    from = len – 1;
    }

    from = from len ? len – 1 : from;

    for(; from>-1; from–){
    if(from in this && this[from] == element){
    return from;
    }
    }

    return -1;
    }
    }

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>