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 相关文章推荐
IE8提示Invalid procedure call or argument 异常的解决方法
Sep 30 Javascript
jQuery如何获取同一个类标签的所有值(默认无法获取)
Sep 25 Javascript
整理Javascript函数学习笔记
Dec 01 Javascript
AngularJS入门心得之directive和controller通信过程
Jan 25 Javascript
js仿手机页面文件下拉刷新效果
Oct 14 Javascript
Kotlin学习第一步 kotlin语法特性
May 25 Javascript
js原生实现移动端手指滑动轮播图效果的示例
Jan 02 Javascript
vue 微信授权登录解决方案
Apr 10 Javascript
详解vuex状态管理模式
Nov 01 Javascript
在Vue中使用icon 字体图标的方法
Jun 14 Javascript
node.js域名解析实现方法详解
Nov 05 Javascript
ant design vue 表格table 默认勾选几项的操作
Oct 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时间戳使用实例代码
2008/06/07 PHP
PHP面向对象之后期静态绑定功能介绍
2015/05/18 PHP
PHP分页显示的方法分析【附PHP通用分页类】
2018/05/10 PHP
PHP设计模式之建造者模式定义与用法简单示例
2018/08/13 PHP
PHP getDocNamespaces()函数讲解
2019/02/03 PHP
prototype.js的Ajax对象
2006/09/23 Javascript
JS画线(实例代码)
2013/11/20 Javascript
Spring mvc 接收json对象
2015/12/10 Javascript
基于javascript bootstrap实现生日日期联动选择
2016/04/07 Javascript
JS中的进制转换以及作用
2016/06/26 Javascript
在localStorage中存储对象数组并读取的方法
2016/09/24 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
bootstrap table表格使用方法详解
2017/04/26 Javascript
Popup弹出框添加数据实现方法
2017/10/27 Javascript
利用10行js代码实现上下滚动公告效果
2017/12/08 Javascript
Promise.all中对于reject的处理方法
2018/08/01 Javascript
详解javascript replace高级用法
2019/02/17 Javascript
js实现图片上传即时显示效果
2019/09/30 Javascript
[01:30:55]VG vs Mineski Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
python通过colorama模块在控制台输出彩色文字的方法
2015/03/19 Python
Python批量更改文件名的实现方法
2017/10/29 Python
Python pymongo模块常用操作分析
2018/09/01 Python
python GUI实现小球满屏乱跑效果
2019/05/09 Python
python中通过selenium简单操作及元素定位知识点总结
2019/09/10 Python
Django视图扩展类知识点详解
2019/10/25 Python
Python-Flask:动态创建表的示例详解
2019/11/22 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
2019/12/27 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
HTML5 声明兼容IE的写法
2011/05/16 HTML / CSS
波兰电子产品购物网站:Vobis
2019/05/26 全球购物
SQL中where和having的区别
2012/06/17 面试题
标准导师推荐信(医学类)
2013/10/28 职场文书
仓库管理专业个人自我评价范文
2013/11/11 职场文书
大学共青团员个人自我评价
2014/04/16 职场文书
《鸿门宴》教学反思
2014/04/22 职场文书
Python标准库之typing的用法(类型标注)
2021/06/02 Python