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 confirm选择判断
Oct 18 Javascript
基于Jquery的实现回车键Enter切换焦点
Sep 14 Javascript
jquery移动listbox的值原理及代码
May 03 Javascript
javascript实现的HashMap类代码
Jun 27 Javascript
javascript去除空格方法小结
May 21 Javascript
js基础知识(公有方法、私有方法、特权方法)
Nov 06 Javascript
jQuery插件实现带圆点的焦点图片轮播切换
Jan 18 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
Apr 18 Javascript
深入浅析JavaScript中with语句的理解
May 12 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
Jun 01 Javascript
使用JavaScript实现一个小程序之99乘法表
Sep 21 Javascript
Vue实现简单计算器
Jan 20 Vue.js
使用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代码审计比较有意思的例子
2014/05/07 PHP
php实现建立多层级目录的方法
2014/07/19 PHP
PHP实现的下载远程图片自定义函数分享
2015/01/28 PHP
php实现三级级联下拉框
2016/04/17 PHP
php版微信公众平台之微信网页登陆授权示例
2016/09/23 PHP
php 如何禁用eval() 函数实例详解
2016/12/01 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
2012/02/03 Javascript
jQuery中:submit选择器用法实例
2015/01/03 Javascript
jQuery创建自定义的选择器用以选择高度大于100的超链接实例
2015/03/18 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
2017/03/28 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
2017/08/24 Javascript
React Native时间转换格式工具类分享
2017/10/24 Javascript
vue 动态修改a标签的样式的方法
2018/01/18 Javascript
解决jquery有正确返回值但不执行success函数的问题
2018/08/20 jQuery
使用ESLint禁止项目导入特定模块的方法步骤
2019/03/04 Javascript
layui写后台表格思路和赋值用法详解
2019/11/14 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
2020/10/09 Javascript
js中复选框的取值及赋值示例详解
2020/10/18 Javascript
Python常用列表数据结构小结
2014/08/06 Python
深入解析Python中的WSGI接口
2015/05/11 Python
Python的Twisted框架上手前所必须了解的异步编程思想
2016/05/25 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
2019/06/21 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
2019/12/27 Python
Python操控mysql批量插入数据的实现方法
2020/10/27 Python
OpenCV+python实现膨胀和腐蚀的示例
2020/12/21 Python
外语专业毕业生个人的自荐信
2013/11/19 职场文书
《青蛙看海》教学反思
2014/04/23 职场文书
书法兴趣小组活动总结
2014/07/07 职场文书
党员检讨书
2014/10/13 职场文书
工程部主管岗位职责
2015/02/12 职场文书
个人自荐书范文
2015/03/09 职场文书
举起手来观后感
2015/06/09 职场文书
python实现Thrift服务端的方法
2021/04/20 Python
python神经网络编程之手写数字识别
2021/05/08 Python
angular4实现带搜索的下拉框
2022/03/25 Javascript