这次涉及的知识是与数组相关,与变量差不多,先声明,再赋值。
1 声明数组(创建数组)
两种方法
let arr=[]
let arr= new array()
变量初始化:在声明的同时赋值。
let arr=[1,2]
let arr= new array(1,2)
let arr= new array(2)/一个数据时,代表数组的长度,不是数组的元素。
2 操作数组(增,删,改,查)
增 ---索引号从0开始
// var arrStus = [1,2,3];
// arrStus[3]=4;
// alert(arrStus);
删 ---效果不是很好,不建议使用,
delete数组名[索引号]
只是删除数值,数值的位置还在。内置方法可以解决
// var arrStus = [1,2,3];
// arrStus[3]=4;
// alert(arrStus);
// delete arrStus[0];
// console.log(arrStus[0])//undefined
改
数组名[索引号]=新值
查
console.log(数组名[索引号])
查数据类型的函数为instanceof
3 遍历(循环)
遍历: 就是把数组中的每个元素从头到尾都访问一次(类似我们每天早上学生的点名)
我们可以通过 for 循环索引遍历数组中的每一项
数组.length 数组的长度,数组中元素的个数,数组的长度永远比最大的索引号大1。
// var arr = ['red', 'green', 'blue'];
// for (var i = 0; i < arr.length; i++) {
// console.log(arr[i]);
// }
// let a=[10,20];
// console.log(typeof a)//输出为object 用typeof查数组类型输出结果只有object
// console.log(a instanceof Array)//true 输出结果为true或者false
4 深拷贝和浅拷贝:
1、浅拷贝,指的是重新分配一块内存,创建一个新的对象,但里面的元素是原对象中各个子对象的引用。
2、深拷贝,是指重新分配一块内存,创建一个新的对象,并且将原对象中的元素,以递归的方式,通过创建新的子对象拷贝到新对象中。因此,新对象和原对象没有任何关联。
3、区别:浅拷贝,修改原数组或新数组,两个数组的值会同步修改 ,深拷贝,修改原数组或新数组,两个数组的值不会同步修改
4、本质区别:浅拷贝修改了值,不会新建一个内存地址的对象, 深拷贝 如果修改了值,及时复制了一份新的内存地址,原始地址的值不会被改变
//浅拷贝
// let a2=a;
// console.log(a,a2)
// //深拷贝
// let a1=[];
// for(let i=0;i<a.length;i++){
// a1[i]=a[i];
// // a1[a1.length]=a[i];
// }
// console.log(a,a1)
// a[0]='nice';
// a1[2]='hello';
// console.log(a,a1);
5 数组的内置方法
函数名字 | 用法 | 是否修改原数组 |
数组.push(元素) | 向数组的末尾添加元素并返回新数组的长度 | 是 |
数组.pop() | 删除数组的末尾元素并返回删除的元素 | 是 |
数组.unshift(元素) | 向数组的开头添加元素并返回新数组的长度 | 是 |
数组.shift() | 删除数组的末尾元素并返回第一个元素 | 是 |
数组.splice(index,howmany,ele1) | 向数组的末尾添加元素并返回新数组的长度 | 是 |
// let a=[1,2,3,4]
// let b=a.push(5);
// console.log(a,b);//(5) [1, 2, 3, 4, 5] 5
// let a=[1,2,3,4]
// let b=a.pop();
// console.log(a,b);//(3) [1, 2, 3]4
// let a=[1,2,3,4]
// let b=a.unshift(1);
// console.log(a,b);//(5) [1, 1, 2, 3, 4] 5
// let a=[1,2,3,4]
// let b=a.shift();
// console.log(a,b);//(3) [2, 3, 4] 1
// let a=[1,2,3,4]
// let b=a.splice(1,2);
// console.log(a,b);//(2) [1, 4] (2) [2, 3]
// let a=[1,2,3,4]
// let b=a.splice(1,0,5,6);
// console.log(a,b);//(6) [1, 5, 6, 2, 3, 4] []