Javascript数组及类数组的原理解析

  介绍

本篇文章给大家分享的是有关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数组及类数组的原理解析