06-数组
数组(Array)是属于**内置对象 **
**
数组中的元素可以是任意的数据类型,也可以是对象,也可以是函数,也可以是数组。数组的元素中,如果存放的是数组,这种数组就是二维数组。
js数组内可以放多个不同类型的值,不会报错,但建议放同一个类型的~!
相关链接
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array
一、创建数组
1.数组字面量
var arr1 = []; // 创建一个空的数组
var arr2 = [1,2,3]; // 创建带初始值的数组
2.构造函数创建数组
var arr = new Array(参数);
- 参数为空,代表一个空数组
- 参数是一个值,代表的是 数组长度 ,而不是数组值
- 参数是多个值,才是数组元素
<script>
var arr = new Array();
var arr1 = new Array(3);
var arr2 = new Array(3, 2, 1);
console.log(arr);
console.log(arr1);
console.log(arr2);
</script>
二、数组的索引
索引 (下标) :用来访问数组元素的序号,代表的是数组中的元素在数组中的位置(下标从 0 开始算起)
- 获取元素在数组中的索引值
- 数组中没有该元素,就返回-1
var arr2 = new Array(3, 2, 1);
// 获取元素在数组中的索引值
console.log(arr2.indexOf(1));//2
console.log(arr2.indexOf(8));//-1
通过索引值操作数组
- 增
- arr[arr.length]
- 删
- arr[索引] = null -> 假删除,只会清空值
- 改
- arr[索引] = 新值;
- 查
- arr[索引]
三、数组的长度
可以使用length
属性来获取数组的长度(即“元素的个数”)。
数组的长度 = 数组的最大索引 + 1
数组的长度可修改
var arr3 = [1, 2, 3, 4];
arr3.length = 5;
console.log(arr3);
四、遍历数组
for (let i = 0; i < arr3.length; i++) {
console.log(arr3[i]);
}
es6遍历
// 遍历数组
var arr7 = [555, 666, 999];
// 遍历数组的索引
for (let index of arr7.keys()) {
console.log(index);
}
// 0
// 1
// 2
// 遍历数组中的元素
for (let elem of arr7.values()) {
console.log(elem);
}
// 555
// 666
// 999
// 遍历数组的索引和元素
for (let [index, elem] of arr7.entries()) {
console.log(index, elem);
}
// 0 555
// 1 666
// 2 999
</script>
五、es6的扩展
https://es6.ruanyifeng.com/#docs/array
...
语法
<script>
var arr = [1, 2, 3];
var arr1 = [4, 5, 6];
var arr2 = ['小', '艾', '同学'];
// 把数组展开为用逗号分隔的该数组中所有元素的序列
console.log(...arr);//1 2 3
//求数组中的最大值
console.log(Math.max(...arr1));//6
// 数组拼接
arr.push(...arr1)
console.log(arr);//[1, 2, 3, 4, 5, 6]
// 复制数组
// 写法一
var arr2 = [...arr1];
console.log(arr2);//[4, 5, 6]
var arr2 = ['冲', '冲', '冲'];
// 这种复制实际上是克隆了原数组的值,而不是地址值所以修改arr2,不会影响arr1
console.log(arr2);//["冲", "冲", "冲"]
console.log(arr1);//[4, 5, 6]
// 将字符串转为真正的数组
var str = 'Hello World';
// 空格会解析
console.log([...str]);//["H", "e", "l", "l", "o", " ", "W", "o", "r", "l", "d"]
// Array.of基本上可以用来替代Array()或new Array(),并且不存在由于参数不同而导致的重载。它的行为非常统一。
// 用newArray时候,里面只有一值,是代表数组的长度
var arr4 = new Array(3);//[empty × 3]
console.log(arr4);
// 用Array.of即使里面是一个值,也是数组中的元素
var arr5 = Array.of(3); //[3]
console.log(arr5);
// .fill可以替换数组中的元素
console.log(arr);//[1, 2, 3, 4, 5, 6]
// fill只穿一个参数默认全部替换
arr.fill(666);
console.log(arr);// [666, 666, 666, 666, 666, 666]
// fill第一个参数:要替换的元素
// fill第二个参数:替换索引开始的位置
// fill第三个参数:替换的索引结束位置,不含这个值
arr.fill(7, 1, 3); //[1,3)
console.log(arr); // [666, 7, 7 666, 666, 666]
// fill第一参数还是要替换的元素
// fill第二个参数是要替换的索引开始的位置,没有第三个参数,默认后面的全部替换
arr.fill(555, 2)
console.log(arr);//[666, 7, 555, 555, 555, 555]
</script>