YUI Array 之 indexOf(索引值|搜索)
YUI原码


YUI indexOfYArray.indexOf = Lang._isNative(Native.indexOf) ? function (array, value, from) {
return Native.indexOf.call(array, value, from);
} : function (array, value, from) {
// http://es5.github.com/#x15.4.4.14
var len = array.length; from = +from || 0;
from = (from > 0 || -1) * Math.floor(Math.abs(from));//取整 if (from < 0) {
from += len; if (from < 0) {
from = 0;
}
} for (; from < len; ++from) {
if (from in array && array[from] === value) {
return from;
}
} return -1;
};
tangram – indexOf 原码


tangram indexOfvar T,baidu=T= function(){
///import baidu.array; baidu.array.extend({
indexOf : function (match, fromIndex) {
baidu.check(".+(,number)?","baidu.array.indexOf");
var len = this.length; // 小于 0
(fromIndex = fromIndex | 0) < 0 && (fromIndex = Math.max(0, len + fromIndex)); for ( ; fromIndex < len; fromIndex++) {
if(fromIndex in this && this[fromIndex] === match) {
return fromIndex;
}
} return -1;
}
});
return baidu;
}();
underscore原码


underscore indexOf_.indexOf = function(array, item, isSorted) {
if (array == null) return -1;
var i = 0, l = array.length;
if (isSorted) {
if (typeof isSorted == 'number') {
i = (isSorted < 0 ? Math.max(0, l + isSorted) : isSorted);
} else {
i = _.sortedIndex(array, item);
return array[i] === item ? i : -1;
}
}
if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted);
for (; i < l; i++) if (array[i] === item) return i;
return -1;
};
qwrap原码


qwrap indexOfindexOf: function(arr, obj, fromIdx) {
var len = arr.length;
fromIdx |= 0; //取整
if (fromIdx < 0) {
fromIdx += len;
}
if (fromIdx < 0) {
fromIdx = 0;
}
for (; fromIdx < len; fromIdx++) {
if (fromIdx in arr && arr[fromIdx] === obj) {
return fromIdx;
}
}
return -1;
}
比较
1.不同在于几个对于起始位置的处理
a. YUI的处理看来来复杂,但是它是根据ES5中的标准步骤进行的
b. underscore是唯一一个没用对起始值取整的且不支持负值,但它提供了对大数组提供二进制搜索的功能
c. underscore针对null做了特殊处理,防止抛出错误,影响后续进行
d. 比较之下,对于起始位置的处理,倾向于tangram的做法,简洁明了,充分利用了各种运算符的特性
(fromIndex = fromIndex | 0 ) < 0 && (fromIndex = Math.max(0, len + fromIndex))
YUI Array 之 indexOf(索引值|搜索)的更多相关文章
- 找出numpy array数组的最值及其索引
在list列表中,max(list)可以得到list的最大值,list.index(max(list))可以得到最大值对应的索引 但在numpy中的array没有index方法,取而代之的是where ...
- [基础] Array.prototype.indexOf()查询方式
背景 最近在看Redux源码,createStore用于注册一个全局store,其内部维护一个Listeren数组,存放state变化时所有的响应函数. 其中store.subscribe(liste ...
- Flex中 Array 的IndexOf 的作用
Flex中 Array 的IndexOf 的作用 1.说明 indexOf用于在索引中从小到大查找,假设查得到就返回索引值,查不到就返回-1: 2.实例 (1)设计源代码 <?xml ve ...
- 使用Array.prototype.indexOf()的几点注意
对应indexOf这个方法,在日常开发中比较常见的应该是String.prototype.indexOf()方法,Array.prototype.indexOf()方法和其有很大的相似性,本文不想去描 ...
- PHP学习之数组Array操作和键值对操作函数(一)
PHP 中的数组实际上是一个有序映射.映射是一种把 values关联到 keys 的类型.此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合, ...
- Python array,list,dataframe索引切片操作 2016年07月19日——智浪文档
array,list,dataframe索引切片操作 2016年07月19日——智浪文档 list,一维,二维array,datafrme,loc.iloc.ix的简单探讨 Numpy数组的索引和切片 ...
- JS Array常用方法indexOf/filter/forEach/map/reduce详解
Array共有九个方法 Array.prototype.indexOf Array.prototype.lastIndexOf Array.prototype.every Array.protot ...
- 在Hadoop分布式文件系统的索引和搜索
FROM:http://www.drdobbs.com/parallel/indexing-and-searching-on-a-hadoop-distr/226300241?pgno=3 在今天的信 ...
- [转载]jquery获取元素索引值index()方法:
jquery的index()方法 搜索匹配的元素,并返回相应元素的索引值,从0开始计数. 如果不给 .index() 方法传递参数,那么返回值就是这个jQuery对象集合中第一个元素相对于其同辈元素的 ...
随机推荐
- C++中引用和指针详解
先来分析指针这个东东: 从概念上讲,指针本质上就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变. 上面的图表示了程序运行时变量的值 ...
- Mysql学习(慕课学习笔记5)约束
约束类型: 1.NOT NULL (非空约束) 2.PRIMARY KEY(主键约束) 每张数据表只能存在一个主键 主键保证记录的唯一性 主键自动为NOT NULL (Auto_increment ...
- C# post请求 HttpWebRequest
//body是要传递的参数,格式"roleId=1&uid=2" //post的cotentType填写: //"application/x-www-form-u ...
- JS对象排序
function createComparisonFunction(propertyName) {return function(object1, object2){var value1 = obje ...
- thinkPHP中省市级联下拉列表
公共函数放置位置common文件夹下common.php文件(此段代码也可放置在要使用的控制器中) 封装的下拉列表函数代码: /** * 根据列表拼装成一个下拉列表 ADD BY CK * @para ...
- 小试牛刀——爬topit.me的图片,附github简易上传教程
接触了scrapy ,发现爬虫效率高了许多,借鉴大神们的文章,做了一个爬虫练练手: 我的环境是:Ubuntu14.04 + python 2.7 + scrapy 0.24 目标 topit.me 一 ...
- List myList=new ArrayList()的理解
ArrayList不是继承List接口,是实现了List接口.你写成ArrayList arrayList = new ArrayList();这样不会有任何问题.和List list = new A ...
- nginx网站架构优化思路(原)
本人接触的优化主要分为三大类 黑体的为本模块下的重点 ---------------安全优化 安全在生产场景中是第一位的 1.1 站点目录权限的优化 (修改权限755 644 所属用户root,需要 ...
- HDU 4405 Aeroplane chess(期望)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4405 题意:从0走到n,每次走之前掷一次筛子,掷出几点就向前走几点,走到大于等于n的地方就停止.但是, ...
- Android CursorAdapter
CursorAdapter 继承于BaseAdapter是个虚类,它为cursor和ListView提供了连接的桥梁. public abstract class Cur ...