数组
- 数组用于存放多个数据
创建一个数组
- new Array(长度)
长度,数组里面的数据总数,长度一定是一个非负整数
new Array(数据, 数据, 数据….)
创建一个数组,并初始化其每一项的值
数组项:数组其中的一项数据
- [数据,数据,数据,….]
创建一个数据,并初始化其每一项的值
认识数组的本质
数组的本质是一个对象
- length属性:数组的长度,会自动变化,值为最大下标+1
- 数字字符串属性:叫做下标,也叫做索引,相当于数组中每个数据的编号,下标从0开始排列
连续下标的取值范围:0 ~ length -1,如果给length直接赋值,会导致数组可能被截断
实际开发中,不要给length赋值。
下标
通常情况下,下标是连续的。
下标不连续的数组,叫做稀松数组。
数组的常见操作
添加数组项
- 数组[长度] = 数据:向数组末尾添加一个数据
- 数组.push(数据): 向数组末尾添加一个数据
- 数组.unshift(数据):向数组起始位置添加一个数据,会导致数组每一项的下标向后移动
- 数组.splice(下标, 0, 添加的数据1,数据N): 从指定下标位置开始,删除0个,然后在该位置插入添加的数据,如果下标超过范围,则按照范围的边界进行处理。
push、unshift、splice可以添加多个数据
var arr = [443, 3453, 34443, 343, 11]
// 1.
// arr[5] = 888;
// arr[arr.length] = 999; //在末尾添加
// 2.
// arr.push(1234); //在末尾添加
// 3.
// arr.unshift(4321); //在数组起始位置添加一个数据 后面的数据下标依次往后移
// arr.push(); arr.unshift(); 这两个函数都可以同时添加多个数据
// arr.push(12, 13, 14);
// arr.unshift(22, 33, 44);
// 4.
arr.splice(2, 1, 111, '222', 333) //结果:443, 3453,111,'222', 333 , 343, 11
console.log(arr);
删除数据
- delete 数组[下标]: 这种做法不会导致数组其他的属性发生变化,因此,该做法会导致产生稀松数组,所以不推荐使用该做法。
- 数组.pop(): 删除数组的最后一项,该表达式返回最后一项的数据
- 数组.shift():删除数组第一项,该表达式返回第一项的数据
- 数组.splice(下标, 删除的数量, 添加的数据): 从指定下标位置开始,删除指定数量,然后在该位置插入添加的数据,如果下标超过范围,则按照范围的边界进行处理。返回一个新数组,该数组记录被删除的数据。
var arr = [1, 2, 3, 4]
// 1.delete 不会导致其他属性发生变化 因此 该做法会导致产生稀松数组 所以不推荐使用
// delete arr[3];
// 2.直接删除 只能指定单个删
// arr.pop(3);
// 可以接收到被删除的值
/* var n = arr.pop(3)
console.log(n); */
// 3.删除首个数据 每次删除都是删除首个
// arr.shift();
// 接收被删除的值
/* var m = arr.shift()
console.log(m);*/
// 4.arr.splice(下标, 删除个数);
// 从下标开始位置删除 包括下标起始位置
// arr.splice(0, 2);
// 接收被删除的数据
/* var i = arr.splice(2, 2);
console.log(i); */
console.log(arr);
其他操作
- 数组.slice(起始位置下标, 结束位置下标):将起始位置到结束位置之间的数据拿出来,得到一个新的数组,该函数不会改变原数组;注意:结束下标取不到 只能取到指定结束下标的前一位
下标可以写负数,如果是负数,则从数组的末尾开始计算。
如果不写结束下标,则直接取到末尾。
- 数组清空
方法1:数组.splice(0, 数组.length); 数组.splice(下标, 删除个数);
方法2:数组.length = 0; 把数组length长度设置为0
- 查找数组中某一项的下标
数组.indexOf(数据)
从数组中依次查找对应的数据,查找时使用严格相等进行比较。找到第一个匹配的下标,返回。如果没有找到,则得到-1;
数组.lastIndexOf(数据)
功能和indexOf类似,只是查找的是最后一个匹配的下标
- 数组.fill
数组.fill(数据):将数组的所有项,填充为指定的数据
数组.fill(数组, 开始下标): 将数组从开始下标起,到数组的末尾,填充为指定的数据
数组.fill(数组, 开始下标,结束下标): 将数组从开始下标起,到数组的结束下标(取不到),填充为指定的数据
语法补充
in关键字
判断某个属性在对象中是否存在
属性名 in 对象
for-in foreach 循环
for(var prop in 对象){
//循环体
// 取出对象的所有属性名,每次循环将其中一个属性名赋值给变量prop,运行循环体。
}
// 得到下标后获取下标的数据
var arr = [1, 2, 3, "a", "b", "c"]
for (var index in arr) {
console.log(index, arr[index]);
}