chrome原生方法之数组


Posted in Javascript onNovember 30, 2011

下面看一下chrome/15实现的一些数组方法
---------------------------------------------------------------------------------------------
concat:这个好说,唯一需要注意的就是concat不是就地修改的,是指返回链接后的结果,另外一点是指回展开第一层数组
join:连接数组
pop:出栈操作,注意这个也是就地修改原数组
push: 入栈操作,注意这个也是就地修改原数组
reverse: 倒序数组,注意这个也是就地修改原数组
shift: 出队操作,注意这个也是就地修改原数组
unshift: 在数组头部插入一项,后面的以此后移
slice: 截取数组的一部分,里一个常见的操作是用这个方法把类数组转化为真正的数组
splice:修改数组,可以用来插入新项,注意这个也是就地修改原数组
sort: 数组排序,注意这个也是就地修改原数组
toLocaleString:返回数组的本地字符串形式,一般是用逗号
toString: 返回数组的字符串形式,一般是用逗号
---------------------------------------------------------------------------------------------
isArray:判断一个变量是不是数组,注意,这个是个静态方法,调用形式Array.isArray()
---------------------------------------------------------------------------------------------
every:判断一个数组里面的项是不是都满足条件,如果全部满足条件,返回true,否则返回false
some: 这个可以跟every联系起来,every要求全部为true最后才为true,some只要有一项为true,返回就为true
filter:按照给定条件从数组里筛选出符合条件的项,然后作为新的数组返回,否则返回null
forEach:对数组中的每一项一次执行给定的操作
indexOf:返回给定项在数组中的第一个位置(从0下标开始)
lastIndexOf:与indexOf相反
map:对数组中的每一项一次执行给定的操作并返回修改后的数组
reduce:reduce(func,init) func为二元函数,将func作用于seq序列的元素,每次携带一对(先前的结果以及下一个序列的元素),连续的将现有的结果和下一个值作用在获得的随后的结果上,最后减少我们的序列为一个单一的返回值。
reduceRight:reduce从右往左的实现
---------------------------------------------------------------------------------------------
当我们实现自己的小型库或者一些工具时,也可以稍微扩展一下

Object.prototype.extend = function(src){ 
for(var i in src){ 
this[i] = src[i]; 
} 
} 
Array.extend({ 
toArray : function(arrayLike){ 
try{ 
return [].slice.call(arrayLike); 
}catch(ex){ 
var ret = []; 
for(var i = 0,len = arrayLike.length ; i < len ; i++){ 
ret.push(arrayLike[i]); 
} 
} 
}, 
isArray : (Array.isArray)?Array.isArray:function(ele){ 
return ele.constructor == Array; 
} 
}) 
Array.prototype.extend((function(){ 
var each = Array.prototype.forEach || function(fn,obj){ 
for(var i = 0,len = this.length ; i < len ; i++){ 
fn.call(obj,this[i]); 
} 
}; 
var filter = Array.prototype.filter || function(fn,obj){ 
var result = []; 
for(var i = 0,len = this.length ; i < len ; i++){ 
if(fn.call(obj,this[i])){ 
result.push(this[i]); 
} 
} 
return result; 
}; 
var every = Array.prototype.every || function(fn,obj){ 
for(var i = 0,len = this.length ; i < len ; i++){ 
if(!fn.call(obj,this[i])){ 
return false; 
} 
} 
return true; 
}; 
var some = Array.prototype.some || function(fn,obj){ 
for(var i = 0,len = this.length ; i < len ; i++){ 
if(fn.call(obj,this[i])){ 
return true; 
} 
} 
return false; 
}; 
var indexOf = Array.prototype.indexOf || function(dest){ 
for(var i = 0; i < this.length ;i++){ 
if(dest == this[i]){ 
return i; 
} 
} 
return -1; 
}; 
var map = Array.prototype.map || function(fn,obj){ 
var result = []; 
for(var i = 0,len = this.length ; i < len ; i++){ 
result.push(fn.call(obj,this[i])); 
} 
return result; 
}; 
var reduce =Array.prototype.reduce || function(fn,init){ 
var result = init || this[0]; 
for(var i = 0; i < this.length; i++){ 
result = fn(result,this[i]); 
} 
return result; 
} 
return { 
map : map, 
each : each, 
some : some, 
every : every, 
filter : filter, 
indexOf: indexOf, 
reduce : reduce 
} 
})())

下面是一个小例子,给指定ul下面的li设置内容:
<ul id="test"> 
<li></li> 
<li></li> 
<li></li> 
</ul> 
<script type="text/javascript"> 
Array.prototype.slice.call(document.getElementById('test').getElementsByTagName('li'),0).each(function(li){ 
li.innerHTML = '测试each'; 
}) 
</script>
Javascript 相关文章推荐
javascript Keycode对照表
Oct 24 Javascript
js中if语句的几种优化代码写法
Mar 12 Javascript
分享27个jQuery 表单插件集合推荐
Apr 25 Javascript
JavaScript cookie的设置获取删除详解
Feb 11 Javascript
谈一谈jQuery核心架构设计
Mar 28 Javascript
js图片轮播手动切换特效
Jan 12 Javascript
JavaScript 数组的进化与性能分析
Sep 18 Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
Jan 03 Javascript
JS实现换肤功能的方法实例详解
Jan 30 Javascript
Vue+abp微信扫码登录的实现代码示例
Jan 06 Javascript
在vue中使用el-tab-pane v-show/v-if无效的解决
Aug 03 Javascript
React四级菜单的实现
Apr 08 Javascript
使用Javascript接收get传递的值的代码
Nov 30 #Javascript
关于递归运算的顺序测试代码
Nov 30 #Javascript
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
Nov 30 #Javascript
Jquery插件之打造自定义的select标签
Nov 30 #Javascript
jquery中dom操作和事件的实例学习 仿yahoo邮箱登录框的提示效果
Nov 30 #Javascript
jquery中dom操作和事件的实例学习-表单验证
Nov 30 #Javascript
javascript开发随笔二 动态加载js和文件
Nov 25 #Javascript
You might like
山进SANGEAN ATS-909X电路分析
2021/03/02 无线电
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
Yii框架的redis命令使用方法简单示例
2019/10/15 PHP
javascript StringBuilder类实现
2008/12/22 Javascript
javascript 哈希表(hashtable)的简单实现
2010/01/20 Javascript
Extjs EditorGridPanel中ComboBox列的显示问题
2011/07/04 Javascript
使用jquery读取html5 localstorage的值的方法
2013/01/04 Javascript
js异步加载的三种解决方案
2013/03/04 Javascript
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
2013/05/13 Javascript
Jquery方式获取iframe页面中的 Dom元素
2014/05/07 Javascript
jquery中checkbox使用方法简单实例演示
2015/11/24 Javascript
在JavaScript中对HTML进行反转义详解
2016/05/18 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
jQuery validate 验证radio实例
2017/03/01 Javascript
js实现移动端编辑添加地址【模仿京东】
2017/04/28 Javascript
JS仿QQ好友列表展开、收缩功能(第二篇)
2017/07/07 Javascript
JS实现的数组去除重复数据算法小结
2017/11/17 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
实例讲解React 组件
2020/07/07 Javascript
利用python获取Ping结果示例代码
2017/07/06 Python
Python基于回溯法子集树模板解决数字组合问题实例
2017/09/02 Python
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
flask框架视图函数用法示例
2018/07/19 Python
python中的turtle库函数简单使用教程
2018/07/23 Python
Python中的相关分析correlation analysis的实现
2019/08/29 Python
Python爬虫解析网页的4种方式实例及原理解析
2019/12/30 Python
浅析Python 中的 WSGI 接口和 WSGI 服务的运行
2020/12/09 Python
DBA的职责都有哪些
2012/05/16 面试题
求职信范文英文版
2014/01/05 职场文书
干部下基层实施方案
2014/03/14 职场文书
自我推荐信范文
2014/05/09 职场文书
学校春季防火方案
2014/06/08 职场文书
党的群众路线领导班子整改方案
2014/09/27 职场文书
电工生产实习心得体会
2016/01/22 职场文书
美德少年事迹材料(2016推荐版)
2016/02/25 职场文书
Golang二维切片初始化的实现
2021/04/08 Golang