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代码
Aug 29 Javascript
js 浏览器事件介绍
Mar 30 Javascript
jquery如何把数组变为字符串传到服务端并处理
Apr 30 Javascript
jQuery $.extend()用法总结
Jun 15 Javascript
jQuery中hide()方法用法实例
Dec 24 Javascript
javascript作用域问题实例分析
Jul 13 Javascript
关于cookie的初识和运用(js和jq)
Apr 07 Javascript
javascript滚轮控制模拟滚动条
Oct 19 Javascript
解决webpack -p压缩打包react报语法错误的方法
Jul 03 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
Feb 09 Javascript
vue项目接口域名动态获取操作
Aug 13 Javascript
javascript实现简易计算器功能
Sep 23 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 zip扩展Linux下安装过程分享
2014/05/05 PHP
删除PHP数组中的重复元素的实现代码
2017/04/10 PHP
Yii 2中的load()和save()示例详解
2017/08/03 PHP
JavaScript入门教程(10) 认识其他对象
2009/01/31 Javascript
javascript 语法基础 想学习js的朋友可以看看
2009/12/16 Javascript
js 全兼容可高亮二级缓冲折叠菜单
2010/06/04 Javascript
JavaScript中伪协议 javascript:使用探讨
2014/07/18 Javascript
初识Node.js
2015/03/20 Javascript
javascript实现九宫格相加数值相等
2020/05/28 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
2016/05/03 Javascript
Javascript字符串常用方法详解
2016/07/21 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
JavaScript触发onScroll事件的函数节流详解
2016/12/14 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
使用VScode 插件debugger for chrome 调试react源码的方法
2019/09/13 Javascript
Vue学习之axios的使用方法实例分析
2020/01/06 Javascript
vscode中Vue别名路径提示的实现
2020/07/31 Javascript
[00:57]深扒TI7聊天轮盘语音出处5
2017/05/11 DOTA
Python获取apk文件URL地址实例
2013/11/01 Python
python编程羊车门问题代码示例
2017/10/25 Python
Python设计模式之迭代器模式原理与用法实例分析
2019/01/10 Python
python钉钉机器人运维脚本监控实例
2019/02/20 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
关于Python中的向量相加和numpy中的向量相加效率对比
2019/08/26 Python
旅游节目策划方案
2014/05/26 职场文书
离婚协议书怎么写
2014/09/12 职场文书
2014酒店客房部工作总结
2014/12/16 职场文书
会计专业自荐信范文
2015/03/05 职场文书
关于倡议书的范文
2015/04/29 职场文书
迎新生欢迎词2015
2015/07/16 职场文书
运动会广播稿200字
2015/08/19 职场文书
「女孩的钓鱼慢活」全新版权绘公布
2022/03/21 日漫
详解pytorch创建tensor函数
2022/03/22 Python
MySQL数据库 任意ip连接方法
2022/05/20 MySQL
SQL Server数据库的三种创建方法汇总
2023/05/08 MySQL