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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。