JS-数组
数组是引用类型,体现在:当我们定义一个数组,typeof array时,输出的是object
还有一个例子:
<script> let array = [1,2,3,4]; let hd = array; hd[1] = 9; console.log(hd); console.log(array); </script>
hd和array输出的都是[1,9,3,4];
----------------------------------------------------------------------
插着说一下const常量和引用的关系:
const定义的量是常量,是没法改的,注意:这个没法改,指的是内存地址没法改,不是内存地址对应的值没法改。
什么意思呢,const a = 1; a = 3;这样会报错;因为当执行a =3 时,系统在内存开辟了一个新的地址存放3,然后把3的地址赋给a,但是a是const定义的常量,a一直要对应1这个内存地址,所以报错。
用数字类型可能有点无法理解,如果用字符串类型就很好理解。
接着说一下数组,数组也是引用关系,例如这样:const array = [1,2,3];array[1] = 100;这样不会报错;
因为我们改变的是这个地址里面的值,而不是改变地址。
---------------------------------------------------------------------
数组创建的细节问题:
<script> let array = [1,2,3,4]; //查看数组的数量 console.log(array.length); //下面这种,是创建了一个数组,数组有3个值, //每一个都是undefined let arr = new Array(3); console.log(arr.length); console.log(arr); //针对上面的解决办法: //一个数组,数组里面只有1个值,是3 let a = Array.of(3); console.log(a.length); console.log(a); </script>
数组和字符串之间的转换:
<script> let array = [1,2,3,4]; //检测传入的是否是数组 console.log(Array.isArray(array)); //true console.log(Array.isArray({})); //false //把数组转为字符串 console.log(array.toString()); let hd = array.join("!"); //用感叹号连接 console.log(hd); //把字符串转换为数组 console.log(hd.split("!"));//按感叹号 //有.length属性的都可以用from来转为数组 console.log(Array.from(hd)); </script>
展开语法(...arr,...?,...):
<script> let arr = [1,2,3]; let hd = [4,5]; //展开语法 //把hd追加到arr后面 arr = [...arr,...hd]; console.log(arr); </script>
增加元素的多种操作:
<script> let arr = [0,1,2]; //方法1 arr[3] = 3; console.log(arr); //方法1进阶版 arr[arr.length] = 4; console.log(arr); //方法2 展开语法...arr let hd = [5,6,7]; arr = [...arr,...hd]; console.log(arr); //方法3 推荐 push arr.push(8,9,10); console.log(arr); //方法2和3的结合 arr.push(...hd); console.log(arr); </script>
数组出栈入栈操作:
<script> let arr = [0,1,2,3]; //从前面弹出一个值 arr.shift(); console.log(arr); //从前面加入 arr.unshift(0); console.log(arr); //从后面弹出 arr.pop(); console.log(arr); //从后面假如 arr.push(3); console.log(arr); </script>
数组排序:
<script> let arr = [0,5,8,1,2,3,6]; arr = arr.sort(function(a,b){ //b-a 从大到小 a-b 从小到大 return a-b; }) console.log(arr); </script>