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 相关文章推荐
Jquery 实现checkbox全选方法
Jan 28 Javascript
js密码强度校验
Nov 10 Javascript
关于网页中的无缝滚动的js代码
Jun 09 Javascript
js控制div层的叠加简单方法
Oct 15 Javascript
js文件中直接alert()中文出来的是乱码的解决方法
Nov 01 Javascript
Java与JavaScript中判断两字符串是否相等的区别
Mar 13 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
Apr 27 Javascript
jquery写出PC端轮播图实例
Jan 26 jQuery
axios发送post请求springMVC接收不到参数的解决方法
Mar 05 Javascript
vue如何将v-for中的表格导出来
May 07 Javascript
原生js实现移动端Touch轮播图的方法步骤
Jan 03 Javascript
vue项目首屏打开速度慢的解决方法
Mar 31 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
遭遇php的in_array低性能问题
2013/09/17 PHP
完美实现wordpress禁止文章修订和自动保存的方法
2014/11/03 PHP
php中memcache 基本操作实例
2015/05/17 PHP
二行代码解决全部网页木马
2008/03/28 Javascript
处理及遍历XML文档DOM元素属性及方法整理
2013/08/23 Javascript
千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
2013/12/05 Javascript
PHPExcel中的一些常用方法汇总
2015/01/23 Javascript
jquery实现美观的导航菜单鼠标提示特效代码
2015/09/06 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
纯JS实现可拖拽表单的简单实例
2016/09/02 Javascript
Node.js检测端口(port)是否被占用的简单示例
2016/09/29 Javascript
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
2017/03/08 Javascript
详解react-native-fs插件的使用以及遇到的坑
2017/09/12 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
2018/02/09 Javascript
Bootstrap实现可折叠分组侧边导航菜单
2018/03/07 Javascript
Nuxt配合Node在实际生产中的应用详解
2018/08/07 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
2018/11/27 Javascript
js Math数学简单使用操作示例
2020/03/13 Javascript
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
2020/04/03 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
2020/11/12 Javascript
[00:27]DOTA2荣耀之路2:Patience from zhou!
2018/05/24 DOTA
让Python代码更快运行的5种方法
2015/06/21 Python
python好玩的项目—色情图片识别代码分享
2017/11/07 Python
通过实例了解python__slots__使用方法
2020/09/14 Python
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
爱淘宝:淘宝网购物分享平台
2017/04/28 全球购物
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
园林技术个人的自我评价
2014/02/15 职场文书
未婚证明格式
2015/06/15 职场文书
小学感恩主题班会
2015/08/12 职场文书
2015年度考核个人工作总结
2015/10/24 职场文书
MySQL安装后默认自带数据库的作用详解
2021/04/27 MySQL
Redis实现一个账号只能登录一个设备
2022/04/19 Redis