1、数组的定义:数组是在堆区存储,通过栈区变量间接访问的一段连续存储空间。
- 1、所有的变量在栈区开辟空间,存放基本类型数据
- 2、所有的object数据,都在堆区开辟空间,将其堆区的地址存在栈区的变量容器中
var arr = new Array(); //创建了一个空数组
var arr = new Array(5); //创建指定长度的数组
var arr = [1,2,3,"娜娜","小林"]; //语法糖、字面量
2、数组变量之间的赋值,属于引用赋值,不会创建新的数组
var arr = [1,3,4,5];
//数据的数据类型
console.log(typeof arr); //object
//引用类型数据的判断
console.log(arr instanceof Array) //true
3、数组元素的访问数组变量名[偏移量] 偏移量==下标
var arr = [1,3,4,5];
// 下标总是从 0开始
console.log(arr[0]); // 1 读取
// 下标结束:数组长度 - 1访问数组长度
console.log(arr.length);
// 数组最后一位元素
console.log(arr[arr.length - 1]);
4、 JS数组越界读取,会返回undefined。越界写入,会扩大数据长度。
//修改arr.length属性,可以修改数组长度
var arr = [1,3,4,5,8];
console.log(arr[arr.length]) //undefined
5、 JS数组元素的数据类型,可以是任意类型,但是:一般开发过程中,数组中推荐只放同一类型的数据。
6、 数组数据处理的最基本方式,就是通过for循环一一遍历,然后通过arr[i]表达式,完成对数据的处理。
// 定义一个数组 最大值,定义一个第三方变量
var arr = [1, 3, 10, 4, 7, 8];
// 设置一个最大值的初始
//初始化成数组的第一个元素,遍历比较赋值
var max = arr[0];
for (var i = 1; i < arr.length; i++) {
// 拿最大值进行遍历+比较
max = max > arr[i] ? max : arr[i];
}
console.log(max); //10
//定义有一个数组,找出相同的
var arr = [1, 2, 2, 3, 2, 3, 4, 5, 3, 10, 6, 6];
for(i = 0; i < arr.length; i++){
//获取当前要比较数
var now = arr[i];
// 切割该数据之后的数组
var newArr = arr.slice(i + 1, arr.length);
// 判断当前值是否在后面的数组中
if(newArr.includes(now)){
console.log(now)
}
}
7、系统提供的数组操作方法 增
var arr = [1,2,3]
//数组末尾追加,返回追加后的数组长度
var length = arr.push("嘿嘿"); // [1,2,3,"嘿嘿"]
//数组首位追加 , 返回追加后的数组长度
var length = arr.unshift("啦啦"); // ["啦啦",1,2,3,"嘿嘿"]
//数组任意位置追加一个或多个 arr.splice
// 返回值是一个数组
var resArr = arr.splice(1,0,"略略","哈哈");
//返回一个数组 ["啦啦","略略","哈哈",1,2,3,"嘿嘿"]
8、系统提供的数组操作方法 删
var arr = [1,2,3]
//从数组末尾删除 pop 一个
var res = arr.pop(); //返回删除的数组元素
//从数组首位删除 shift 一个
var res = arr.shift(); //返回删除的数组元素
//任意位置删除 splice(下标,删除个数)
var res = arr.splice(1,1,"咧咧") // 返回一个数组,包含被删除的元素。
9、系统提供的数组操作方法 改
//切割数组,获取子数组,不会修改原数组 slice(起始下标,结束下标)
// 返回 起始下标,结束下标 — 1 的新数组。
var arr = [1,2,3,4,5,6]
var arr1 = arr;
var res = arr.slice();
arr1[0] = "啦啦";
console.log("arr",arr);
console.log("res",res);
//数组拼接
var arr = [1,3,4]
var newArr = arr.concat( [2,3,4] );
// 深拷贝
var NewArr = [].concat(newArr);
console.log(NewArr)
// 数组内容反向 [1,3,4] -- [4,3,1] 反转
var arr = [1,3,5,7,8]
var res = arr.reverse(); //res就是原数组
console.log(arr,res);
// 4、数组转字符串
var arr = ["XADD","DSES","DGAW","QDX2"];
var sRes = arr.join("-")
console.log(sRes)
10、系统提供的数组操作方法 查
var arr = [1,3,4,5,8];
//查询数组中是否包含一个指定元素如果包含就返回 true ,如果不包含就返回 false
console.log(arr, arr.includes(20)); //false
arr.push(20);
console.log(arr, arr.includes(20)); //true
//返回指定元素在数组中的下标,如果不存在返回-1
var arr = [2,3,4,5,7]
console.log(arr.indexOf(2)); //0
console.log(arr.indexOf("嘿嘿")); //-1
console.log(arr.indexOf("啦啦")); //-1