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源码]超长文章自动分页(客户端版)
Jan 09 Javascript
权威JavaScript 中的内存泄露模式
Aug 13 Javascript
javascript 通用简单的table选项卡实现
May 07 Javascript
JavaScript中的值类型转换介绍
Dec 31 Javascript
原生javascript实现隔行换色
Jan 04 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
Mar 11 Javascript
微信小程序 参数传递实例代码
Mar 20 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
Sep 05 Javascript
通过fastclick源码分析彻底解决tap“点透”
Dec 24 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
Mar 07 Javascript
Node 模块原理与用法详解
May 13 Javascript
vue 获取url参数、get参数返回数组的操作
Nov 12 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
syphon 虹吸式咖啡冲泡冲煮倒水的得与失
2021/03/03 冲泡冲煮
Banner程序
2006/10/09 PHP
浅析php变量修饰符static的使用
2013/06/28 PHP
Yii使用find findAll查找出指定字段的实现方法
2014/09/05 PHP
php中文验证码实现方法
2015/06/18 PHP
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
2006/12/27 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
验证手机号码的JS方法分享
2013/09/10 Javascript
javascript函数特点实例分析
2015/05/14 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
2015/06/25 Javascript
jquery插件jquery.nicescroll实现图片无滚动条左右拖拽的方法
2015/08/10 Javascript
JS实现的适合做faq或menu滑动效果示例
2016/11/17 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
Bootstrap模态框(Modal)实现过渡效果
2017/03/17 Javascript
ng-zorro-antd 入门初体验
2018/12/03 Javascript
Node登录权限验证token验证实现的方法示例
2020/05/25 Javascript
React实现轮播效果
2020/08/25 Javascript
用Python编写分析Python程序性能的工具的教程
2015/04/01 Python
简单介绍Python的Django框架加载模版的方式
2015/07/20 Python
利用numpy实现一、二维数组的拼接简单代码示例
2017/12/15 Python
python实现汉诺塔算法
2021/03/01 Python
Python使用sorted对字典的key或value排序
2018/11/15 Python
python调用java的jar包方法
2018/12/15 Python
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
详解在python操作数据库中游标的使用方法
2019/11/12 Python
Python实现手机号自动判断男女性别(实例解析)
2019/12/22 Python
通过Python实现一个简单的html页面
2020/05/16 Python
详解移动端h5页面根据屏幕适配的四种方案
2020/04/15 HTML / CSS
新加坡航空官方网站:Singapore Airlines
2016/10/13 全球购物
Too Faced官网:美国知名彩妆品牌
2017/03/07 全球购物
什么是设计模式
2012/06/17 面试题
《美丽的丹顶鹤》教学反思
2014/04/22 职场文书
工资证明范本
2015/06/12 职场文书
庆祝教师节主持词
2015/07/06 职场文书
2016清明节森林防火广播稿
2015/12/17 职场文书
解决Jupyter-notebook不弹出默认浏览器的问题
2021/03/30 Python