Javascript数组及类数组相关原理详解
数组创建方式有两种
1.vararr=[]
2.vararr=newArray()
如果只有一个参数会指定数组的长度,当一个参数时只能是整形,如下例子
vararr=newArray(10)
vararr=newArray(10.2)//会报错
vararr=newArray(1,2,3)//arr=[1,2,3]
数组常用方法
改变原数组pushpopshiftunshiftsortreversesplice
不改变原数组concatjoin--->splittoStringslice
比如push函数,看一下例子
vararr=[1,2,3] arr.push(4,5)//arr=[1,2,3,4,5]向数组最后一位添加元素,参数可以多个 //实现原理 Array.prototype.push=function(){ for(vari=0;i其中函数功能,如下
arr.pop()//arr=[1,2,3,4]删除数组最后一位 arr.unshift(-1,0)//arr=[-1,0,1,2,3,4]向数组最前面一位添加元素,参数也可以多个 arr.shift()//arr=[0,1,2,3,4]删除数组最前面一位 arr.reverse()//arr=[4,3,2,1,0]数组取反,倒序 arr.splice(0,3,2,2)//arr=[2,2,1,0]参数1(可以为负数,从倒数第几位起),从第参数1位开始,参数2,删除参数2位,参数3后面的,从删除处添加参数3及后面的参数数据 arr.sort(function(a,b){//排序参数时一个函数,函数参数1为数组前一个,参数2为数组后一个,返回小于0,前面数放前面返回大于0,前面数放后面返回0,不用动 returna>b//升序 //returna看以下例子是实现一个数组乱序
vararr=[1,2,3,4,5,6,7] arr.sort(function(a,b){ returnMath.random()-0.5 }) console.log(arr)看一下例子是求一串字符串的字节数
functionretBytes(str){ varnum=str.length for(vari=0;i255)num++ } returnnum } 再看以下例子
vararr=[1,2,3] console.log(arr.concat(4,5)) console.log(arr.concat([4,5]))//一样,拼接两个数组返回新的数组,不改变原数组 console.log(arr.toString())//1,2,3字符串化 console.log(arr.slice(0,2))//[1,2]参数1,从参数1截取,参数2,截取到参数2位 console.log(arr.slice(1))//从第1位开始截取到最后一位 console.log(arr.slice())//不变,但是用于将一个类数组截取为一个数组,比如arguments console.log(arr.join(','))//1,2,3以参数1相连形成字符串 varstr='1,2,3' console.log(str.split(','))//[1,2,3]以参数1分割成数组,与join互逆 vararr=[str,str1,str2,str3]//多个str相连散列 arr.join('')
类数组
例如arguments
看一个类数组的例子
varobj={ '0':'a', '1':'b', '2':'c', 'length':3, 'push':Array.prototype.push, 'splice':Array.prototype.splice } //属性要为索引(数字)属性,必须有length属性,最好有push方法看一个类数组操作例子
varobj={ '2':'a', '3':'b', 'length':2, 'push':Array.prototype.push } obj.push('c')//obj[obj.length]='c'->此时属性'2'的值被覆盖为'c',length变成3 obj.push('d')//obj[obj.length]='d'->此时属性'3'的值被覆盖为'd',length变成4 console.log(obj)//{2:'c',3:'d',length:4,push:Array.prototype.push}类数组也能添加其他属性,如下
varobj={ '0':'a', '1':'b', '2':'c', 'length':3, 'push':Array.prototype.push, 'splice':Array.prototype.splice, 'name':'lyj', 'age':18 }以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。