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 相关文章推荐
IE浏览器兼容Firefox的JS脚本的代码
Oct 23 Javascript
返回页面顶部top按钮通过锚点实现(自写)
Aug 30 Javascript
jquery图片切换插件
Mar 16 Javascript
理解JavaScript中worker事件api
Dec 25 Javascript
JavaScript深度复制(deep clone)的实现方法
Feb 19 Javascript
使用pcs api往免费的百度网盘上传下载文件的方法
Mar 17 Javascript
jquery删除table当前行的实例代码
Oct 07 Javascript
jQuery实现别踩白块儿网页版小游戏
Jan 18 Javascript
浅谈JS封闭函数、闭包、内置对象
Jul 18 Javascript
深入理解JavaScript和TypeScript中的class
Apr 22 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
Sep 21 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
Sep 06 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
留言板翻页的实现详解
2006/10/09 PHP
手把手教你使用DedeCms V3的在线采集图文教程
2007/04/03 PHP
php 设计模式之 工厂模式
2008/12/19 PHP
PHP 读取和编写 XML
2014/11/19 PHP
php设置页面超时时间解决方法
2015/09/22 PHP
PHP函数超时处理方法
2016/02/14 PHP
ajaxControlToolkit AutoCompleteExtender的用法
2008/10/30 Javascript
JavaScript QueryString解析类代码
2010/01/17 Javascript
解决jquery的datepicker的本地化以及Today问题
2012/05/23 Javascript
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
js 实现浏览历史记录示例
2014/04/20 Javascript
JS打开新窗口防止被浏览器阻止的方法
2015/01/03 Javascript
JS+CSS实现简单的二级下拉导航菜单效果
2015/09/21 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
2015/09/24 Javascript
网页中JS函数自动执行常用三种方法
2016/03/30 Javascript
js制作网站首页图片轮播特效代码
2016/08/30 Javascript
React.Js添加与删除onScroll事件的方法详解
2017/11/03 Javascript
JS实现点击复选框变更DIV显示状态的示例代码
2017/12/18 Javascript
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
2018/10/12 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
vue中的过滤器实例代码详解
2019/06/06 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
js实现Element中input组件的部分功能并封装成组件(实例代码)
2021/03/02 Javascript
python实现异步回调机制代码分享
2014/01/10 Python
如何使用python3获取当前路径及os.path.dirname的使用
2019/12/13 Python
python 实现在shell窗口中编写print不向屏幕输出
2020/02/19 Python
使用python实现名片管理系统
2020/06/18 Python
实习心得体会
2014/01/02 职场文书
行政副总岗位职责
2014/02/23 职场文书
本科毕业生求职信
2014/06/15 职场文书
护士节演讲稿开场白
2014/08/25 职场文书
我的职业生涯规划:打造自己的运动帝国
2014/09/18 职场文书
2014年自愿离婚协议书
2014/10/10 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
Python first-order-model实现让照片动起来
2022/06/25 Python