一、数组概述
js">[1,2,3,"js",true,false]
//这个东西就是一个数组,存储着一些数据的集合
1.1 数组索引
js">//创建一个数组
var arr = ["hello","world"];
/*
上面这个数组中:
第 0 个数据就是字符串`hello`
第 1 个数据就是字符串`world`
*/
- 要取得或设置数组的值,需要使用中括号并提供相应值的数字索引
js">var arr = ["hello","world"];
console.log(arr[0]); // hello
console.log(arr[1]); // world
// 修改第二项
arr[1] = "jack" // ["hello","jack"]
// 添加第三项
arr[2] = "good morning" // ["hello","jack", "good morning"]
1.2 数组长度
js">//创建一个数组
var arr = [1,2,3];
console.log(arr.length);//3
- 可以通过修改
length
属性,从数组末尾删除或添加元素
js">let colors = ["red", "blue", "green"]
colors.length = 2;
console.log(colors) // ["red", "blue"]
colors.length = 3;
console.log(colors) // ["red", "blue", undefined]
1.3 数组空位
- 由于行为不一致和存在性能隐患,因此实践中要避免使用数组空位。
- 如果确实需要空位,则可以显式使用 undefined 值代替
- 使用字面量初始化数组时,可以使用一串逗号来创建空位、
ECMAScript
会将逗号之间相应索引位置的值当成空位
js">const options = [ , , ] // 创建包含 3 个元素的数组
console.log(options.length); // 3
console.log(options); // [ , , ]
- ES6新增方法普遍将这些空位当成存在的元素,只不过值为
undefined
js">const options = [ 1, ,3 ]
for(const option of options){
console.log(option === undefined);
}
/*
false
true
false
*/
- ES6之前的方法会忽视这个空位,但具体行为因方法而异
js">const options = [ 1, ,3 ]
// map() 会跳过空位
console.log(options.map(()=>6)); // [6, undefined, 6]
// join() 视空位为空字符串
console.log(options.join("-")); // "6-6"
二、创建数组
- 数组就是一个
[]
- 在
[]
里面存储着各种各样的数据,按照顺序依次排好
2.1 字面量创建
- 直接使用
[]
的方式创建一个数组,并不会实际调用Array
构造函数
js">//创建一个空数组
var arr1 = [];
//创建一个有内容的数组
var arr2 = [1,2,3];
2.2 构造函数创建
js">// 构造函数不传值
var arr1 = new Array(); // 创建一个空数组,[]
// 构造函数传入一个数字值
var arr2 = new Array(2); // 创建一个长度为10的数组,[,]
// 构造函数传入一个非数字值
var arr3 = new Array("10"); // 创建包含该值的数组的数组,["10"]
// 构造函数传入多个任意值
var arr4 = new Array(1,2,3);// 创建一个包含所有内容的数组,[1,2,3]
- 使用
Array
构造函数时,也可以省略new
操作符,结果是一样的
js">// 构造函数不传值
var arr1 = Array(); // 创建一个空数组,[]
// 构造函数传入一个数字值
var arr2 = Array(2); // 创建一个长度为10的数组,[,]
// 构造函数传入一个非数字值
var arr3 = Array("10"); // 创建包含该值的数组的数组,["10"]
// 构造函数传入多个任意值
var arr4 = Array(1,2,3);// 创建一个包含所有内容的数组,[1,2,3]
其他资料
点击跳转:数组方法大全