介绍
本篇文章给大家分享的是有关Javascript数组及类数组的原理解析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
数组创建方式有两种
1。var arr=[]
2。var arr=new Array ()
如果只有一个参数会指定数组的长度,当一个参数时只能是整形,如下例子
var arr=new Array (10)
引用>
var arr=new Array(10.2)//会报错
var arr=new Array (1、2、3)//arr=(1、2、3)<强>数组常用方法强>
改变原数组推流行转变未排序的反向拼接
不改变原数组concat加入——→分裂toString片
比如推函数,看一下例子
var arr=(1、2、3) 加勒比海盗。推动(4、5)//arr=[1、2、3、4、5)向数组最后一位添加元素,参数可以多个//实现原理 Array.prototype。推动=function () { (var=0;我& lt;arguments.length;我+ +){ 这个(这个。长度]=参数[我] } }其中函数功能,如下
arr.pop ()//arr=(1、2、3、4)删除数组最后一位 加勒比海盗。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]数组取反,倒序 加勒比海盗。拼接(0、3、2、2)//arr=[2 2 1 0]参数1(可以为负数,从倒数第几位起),从第参数1位开始,参数2,删除参数2位,参数3后面的,从删除处添加参数3及后面的参数数据 加勒比海盗。排序(函数(a, b){//排序参数时一个函数,函数参数1为数组前一个,参数2为数组后一个,返回小于0,前面数放前面返回大于0,前面数放后面返回0,不用动 返回一个在b//升序//返回一个& lt;b//降序 })看以下例子是实现一个数组乱序
var arr=[1, 2, 3, 4, 5, 6, 7] 加勒比海盗。排序(函数(a, b) { 返回math . random () - 0.5 }) console.log (arr)看一下例子是求一串字符串的字节数
函数retBytes (str) { var num=str.length (var=0;我& lt;str.length;我+ +){ 如果(str.charCodeAt(我)比;255)num + + } 返回num }再看以下例子
var arr=(1、2、3) console.log(加勒比海盗。concat (4、5)) console.log(加勒比海盗。concat((4、5)))//一样,拼接两个数组返回新的数组,不改变原数组 console.log (arr.toString())//1, 2, 3字符串化 console.log(加勒比海盗。片(0,2))//[1,2]参数1,从参数1截取,参数2,截取到参数2位 console.log (arr.slice(1))//从第1位开始截取到最后一位 console.log (arr.slice())//不变,但是用于将一个类数组截取为一个数组,比如参数 console.log (arr.join(& # 39; & # 39;))//1、2、3以参数1相连形成字符串 var str=& # 39; 1, 2, 3 & # 39; console.log (str.split(& # 39; & # 39;))//[1, 2, 3]以参数1分割成数组,与加入互逆 var arr=(str, str1 str2 str3]//多个str相连散列 arr.join (& # 39; & # 39;)<强>类数组强>
例如参数
看一个类数组的例子
var obj={ & # 39;0 & # 39;:& # 39;一个# 39; & # 39;1 & # 39;:& # 39;b # 39; & # 39;2 & # 39;:& # 39;c # 39; & # 39;长度# 39;:3, & # 39;推动# 39;:Array.prototype.push, & # 39;拼接# 39;:Array.prototype.splice }//属性要为索引数(字)属性,必须有长度属性,最好有推动方法看一个类数组操作例子
var obj={ & # 39;2 & # 39;:& # 39;一个# 39; & # 39;3 & # 39;:& # 39;b # 39; & # 39;长度# 39;:2 & # 39;推动# 39;:Array.prototype.push } obj.push (& # 39; c # 39;)//obj (obj。长度]=& # 39;c # 39;→此时属性& # 39;2 & # 39;的值被覆盖为& # 39;c # 39;,长度变成3 obj.push (& # 39; d # 39;)//obj (obj。长度]=& # 39;d # 39;→此时属性& # 39;3 & # 39;的值被覆盖为& # 39;d # 39;,长度变成4 console.log (obj)//{2: & # 39; c # 39;, 3: & # 39; d # 39;,长度:4,推动:Array.prototype。推动}类数组也能添加其他属性,如下
var obj={ & # 39;0 & # 39;:& # 39;一个# 39; & # 39;1 & # 39;:& # 39;b # 39; & # 39;2 & # 39;:& # 39;c # 39; & # 39;长度# 39;:3, & # 39;推动# 39;:Array.prototype.push, & # 39;拼接# 39;:Array.prototype.splice, & # 39;名字# 39;:& # 39;lyj& # 39; & # 39;年龄# 39;:18 }Javascript数组及类数组的原理解析