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 相关文章推荐
js实现字符串转日期格式的方法
May 20 Javascript
AngularJs入门教程之环境搭建+创建应用示例
Nov 01 Javascript
jQuery插件zTree实现删除树子节点的方法示例
Mar 08 Javascript
原生JS实现自定义滚动条效果
Oct 27 Javascript
详解js中let与var声明变量的区别
Apr 05 Javascript
ES6 Promise对象的应用实例分析
Jun 27 Javascript
详解vue-video-player使用心得(兼容m3u8)
Aug 23 Javascript
高性能js数组去重(12种方法,史上最全)
Dec 21 Javascript
Preload基础使用方法详解
Feb 03 Javascript
微信小程序录音实现功能并上传(使用node解析接收)
Feb 26 Javascript
js通过canvas生成图片缩略图
Oct 02 Javascript
Angular性能优化之第三方组件和懒加载技术
May 10 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调用三种数据库的方法(1)
2006/10/09 PHP
php执行sql语句的写法
2009/03/10 PHP
关于php循环跳出的问题
2013/07/01 PHP
php下载excel无法打开的解决方法
2013/12/24 PHP
PHP实现取得HTTP请求的原文
2014/08/18 PHP
ThinkPHP中的三大自动简介
2014/08/22 PHP
php调用新浪短链接API的方法
2014/11/08 PHP
php实现微信扫码支付
2017/03/26 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
php+croppic.js实现剪切上传图片功能
2018/08/14 PHP
jQuery动态添加的元素绑定事件处理函数代码
2011/08/02 Javascript
通过js动态操作table(新增,删除相关列信息)
2012/05/23 Javascript
扩展IE中一些不兼容的方法如contains、startWith等等
2014/01/09 Javascript
教你如何使用firebug调试功能了解javascript闭包和this
2015/03/04 Javascript
javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)
2015/11/29 Javascript
JavaScript面向对象之私有静态变量实例分析
2016/01/14 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
webstorm中配置nodejs环境及npm的实例
2018/05/15 NodeJs
Nodejs中的JWT和Session的使用
2018/08/21 NodeJs
[02:25]DOTA2英雄基础教程 熊战士
2014/01/03 DOTA
[01:03:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第一场 1月29日
2021/03/11 DOTA
c++生成dll使用python调用dll的方法
2014/01/20 Python
Python实现基于PIL和tesseract的验证码识别功能示例
2018/07/11 Python
Python批量删除只保留最近几天table的代码实例
2019/04/01 Python
python元组和字典的内建函数实例详解
2019/10/22 Python
wxPython实现分隔窗口
2019/11/19 Python
PyQt使用QPropertyAnimation开发简单动画
2020/04/02 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
2013/01/06 HTML / CSS
英国安全产品购物网站:The Safe Shop
2017/03/20 全球购物
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
路由表示做什么用的?在linux环境中怎么来配置一条默认路由?
2013/06/07 面试题
贸易跟单员英文求职信
2014/04/19 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
PostgreSQL基于pgrouting的路径规划处理方法
2022/04/18 PostgreSQL
Java 中的 Lambda List 转 Map 的多种方法详解
2022/07/07 Java/Android