博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
chrome原生方法之数组
阅读量:4356 次
发布时间:2019-06-07

本文共 3623 字,大约阅读时间需要 12 分钟。

由于各浏览器的js实现不同,因此各浏览器的原生对象(这里不涉及DOM实现,当然这也有区别)的原生方法也不尽相同,采用原生方法的好处显而易见,使用兼有效率,而且其中有些方法可能包含在以后的ECMAscript规范中。

下面看一下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从右往左的实现

---------------------------------------------------------------------------------------------

当我们实现自己的小型库或者一些工具时,也可以稍微扩展一下

View Code
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设置内容:

转载于:https://www.cnblogs.com/xesam/archive/2011/11/29/2267458.html

你可能感兴趣的文章
袋鼠云日志,日志分析没那么容易
查看>>
缓存穿透 缓存雪崩 缓存并发
查看>>
了解你的Linux系统:必须掌握的20个命令
查看>>
js setInterval 启用&停止
查看>>
knockoutJS学习笔记04:监控属性
查看>>
Linux下启动/关闭Oracle
查看>>
session和cookie的区别
查看>>
oracle 数据库、实例、服务名、SID
查看>>
web.xml文件的作用
查看>>
linux下oracle调试小知识
查看>>
alert弹出窗口,点击确认后关闭页面
查看>>
oracle问题之数据库恢复(三)
查看>>
单点登陆(SSO)
查看>>
HR,也确实“尽职尽责”
查看>>
MaxComputer 使用客户端配置
查看>>
20190823 顺其自然
查看>>
阅读《余生有你,人间值得》有感
查看>>
每日英语
查看>>
SpringCloud+feign 基于Springboot2.0 负载均衡
查看>>
【BZOJ5094】硬盘检测 概率
查看>>