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 相关文章推荐
Prototype Date对象 学习
Jul 12 Javascript
jQuery 源码分析笔记(4) Ready函数
Jun 02 Javascript
javascript获取作用在元素上面的样式属性代码
Sep 20 Javascript
jQuery超酷平面式时钟效果代码分享
Mar 30 Javascript
jquery实现手风琴效果
Nov 20 Javascript
基于js对象,操作属性、方法详解
Aug 11 Javascript
js实现获取鼠标当前的位置
Dec 14 Javascript
javascript设计模式之中介者模式学习笔记
Feb 15 Javascript
canvas红包照片实例分享
Feb 28 Javascript
在vue项目中使用sass的配置方法
Mar 20 Javascript
简单的React SSR服务器渲染实现
Dec 11 Javascript
canvas多重阴影发光效果实现
Apr 20 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
一个简单的MySQL数据浏览器
2006/10/09 PHP
PHP程序员编程注意事项
2008/04/10 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
2014/04/10 PHP
JavaScript在IE中“意外地调用了方法或属性访问”
2008/11/19 Javascript
JS获取计算机mac地址以及IP的实现方法
2014/01/08 Javascript
jQuery源码解读之removeAttr()方法分析
2015/02/20 Javascript
JavaScript中的small()方法使用详解
2015/06/08 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
JS控制HTML元素的显示和隐藏的两种方法
2016/09/27 Javascript
easyui combotree加载静态数据问题(选不上)解决方法
2016/12/26 Javascript
js自定义弹框插件的封装
2020/08/24 Javascript
教你5分钟学会用requirejs(必看篇)
2017/07/25 Javascript
js实现随机点名小功能
2017/08/17 Javascript
微信小程序网络封装(简单高效)
2018/08/06 Javascript
jQuery实现动画、消失、显现、渐出、渐入效果示例
2018/09/06 jQuery
记一次webapck4 配置文件无效的解决历程
2018/09/19 Javascript
Vue使用zTree插件封装树组件操作示例
2019/04/25 Javascript
javascript实现摄像头拍照预览
2019/09/30 Javascript
微信小程序开发摇一摇功能
2019/11/22 Javascript
JS document文档的简单操作完整示例
2020/01/13 Javascript
Vuex中的Mutations的具体使用方法
2020/06/01 Javascript
Python实现随机生成手机号及正则验证手机号的方法
2018/04/25 Python
python-itchat 获取微信群用户信息的实例
2019/02/21 Python
Python3匿名函数lambda介绍与使用示例
2019/05/18 Python
python对Excel按条件进行内容补充(推荐)
2019/11/24 Python
美国温暖商店:The Warming Store
2018/12/15 全球购物
开办加工厂创业计划书
2014/01/03 职场文书
职工运动会邀请函
2014/02/02 职场文书
大学生秋游活动方案
2014/02/17 职场文书
夜不归宿检讨书
2014/02/25 职场文书
《猫》教学反思
2014/02/26 职场文书
机关作风整顿个人剖析材料
2014/10/06 职场文书
高考学习决心书
2015/02/04 职场文书
工地材料员岗位职责
2015/04/11 职场文书
2016学习雷锋精神活动倡议书
2015/04/27 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书