JavaScript 数组
- 创建数组的方法:可以使用数组字面量
[]
或者new
关键字来创建数组。尽管两种方法都有效,但推荐使用数组字面量。 - 访问和修改数组元素:可以通过索引(从0开始)访问数组元素,并使用内置方法(如
push()
、unshift()
)添加或移除元素。也可以直接通过索引修改数组的内容。 - 数组的内置方法和特性:JavaScript 提供了多种数组操作方法,如
sort()
、slice()
和concat()
。数组在JavaScript中被视为对象,因此数组的元素和属性存储是基于引用的,意味着数组的复制会影响原数组。
数组是可以一次存储多个值的对象。例如,
const words = ["hello", "world", "welcome"];
这里,words 是一个数组。该数组存储了 3 个值。
创建数组
您可以通过两种方式创建数组:
1. 使用数组字面量
创建数组最简单的方法是使用数组字面量 []
。例如,
const array1 = ["eat", "sleep"];
2. 使用 new 关键字
您也可以使用 JavaScript 的 new
关键字创建数组。
const array2 = new Array("eat", "sleep");
在上述两个示例中,我们都创建了一个包含两个元素的数组。
注意:建议使用数组字面量来创建数组。
以下是更多数组示例:
// 空数组
const myList = [];
// 数字数组
const numberArray = [2, 4, 6, 8];
// 字符串数组
const stringArray = ["eat", "work", "sleep"];
// 混合数据类型的数组
const newData = ["work", "exercise", 1, true];
您还可以在数组内存储数组、函数和其他对象。例如,
const newData = [
{ task1: "exercise" },
[1, 2, 3],
function hello() {
console.log("hello");
},
];
访问数组元素
您可以使用索引 (0, 1, 2 …
) 访问数组元素。例如,
const myArray = ["h", "e", "l", "l", "o"];
// 第一个元素
console.log(myArray[0]); // "h"
// 第二个元素
console.log(myArray[1]); // "e"
注意:数组的索引从 0 开始,而不是 1。
向数组中添加元素
您可以使用内置方法 push()
和 unshift()
向数组中添加元素。
push()
方法在数组末尾添加一个元素。例如,
let dailyActivities = ["eat", "sleep"];
// 在末尾添加一个元素
dailyActivities.push("exercise");
console.log(dailyActivities); // ['eat', 'sleep', 'exercise']
unshift()
方法在数组开头添加一个元素。例如,
let dailyActivities = ["eat", "sleep"];
// 在开始处添加一个元素
dailyActivities.unshift("work");
console.log(dailyActivities); // ['work', 'eat', 'sleep']
更改数组元素
您也可以通过访问索引值添加元素或更改元素。
let dailyActivities = ["eat", "sleep"];
// 这会在索引 2 处添加新元素 'exercise'
dailyActivities[2] = "exercise";
console.log(dailyActivities); // ['eat', 'sleep', 'exercise']
假设一个数组有两个元素。如果您尝试在索引 3(第四个元素)处添加一个元素,那么第三个元素将是未定义的。例如,
let dailyActivities = ["eat", "sleep"];
// 这会在索引 3 处添加新元素 'exercise'
dailyActivities[3] = "exercise";
console.log(dailyActivities); // ["eat", "sleep", undefined, "exercise"]
基本上,如果您尝试向高索引添加元素,那么中间的索引将具有未定义的值。
从数组中移除元素
您可以使用 pop()
方法从数组中移除最后一个元素。pop()
方法还会返回被移除的值。例如,
let dailyActivities = ["work", "eat", "sleep", "exercise"];
// 移除最后一个元素
dailyActivities.pop();
console.log(dailyActivities); // ['work', 'eat', 'sleep']
// 从 ['work', 'eat', 'sleep'] 中移除最后一个元素
const removedElement = dailyActivities.pop();
// 获取被移除的元素
console.log(removedElement); // 'sleep'
console.log(dailyActivities); // ['work', 'eat']
如果您需要移除第一个元素,可以使用 shift()
方法。shift()
方法会移除第一个元素,并返回被移除的元素。例如,
let dailyActivities = ["work", "eat", "sleep"];
// 移除第一个元素
dailyActivities.shift();
console.log(dailyActivities); // ['eat', 'sleep']
数组长度
您可以使用 length
属性找到数组的长度(数组中元素的数量)。例如,
const dailyActivities = ["eat", "sleep"];
// 这会给出数组中元素的总数
console.log(dailyActivities.length); // 2
数组方法
在 JavaScript 中,有各种数组方法可用,使执行有用的计算变得更容易。
一些常用的 JavaScript 数组方法是:
方法 | 描述 |
---|---|
concat() | 连接两个或更多数组,并返回结果 |
indexOf() | 搜索数组的一个元素,并返回其位置 |
find() | 返回通过测试的数组元素的第一个值 |
findIndex() | 返回通过测试的数组元素的第一个索引 |
forEach() | 为每个元素调用一个函数 |
includes() | 检查数组是否包含指定的元素 |
push() | 在数组末尾添加一个新元素,并返回数组的新长度 |
unshift() | 在数组开头添加一个新元素,并返回数组的新长度 |
pop() | 移除数组的最后一个元素,并返回被移除的元素 |
shift() | 移除数组的第一个元素,并返回被移除的元素 |
sort() | 以字母顺序对字符串元素进行排序,并按升序排列 |
slice() | 选择数组的一部分,并返回新数组 |
splice() | 移除或替换现有元素和/或添加新元素 |
示例:JavaScript 数组方法
let dailyActivities = ["sleep", "work", "exercise"];
let newRoutine = ["eat"];
// 按字母顺序对元素进行排序
dailyActivities.sort();
console.log(dailyActivities); // ['exercise', 'sleep', 'work']
// 查找字符串的索引位置
const position = dailyActivities.indexOf("work");
console.log(position); // 2
// 切割数组元素
const newDailyActivities = dailyActivities.slice(1);
console.log(newDailyActivities); // [ 'sleep', 'work']
// 连接两个数组
const routine = dailyActivities.concat(newRoutine);
console.log(routine); // ["exercise", "sleep", "work", "eat"]
注意:如果元素不在数组中,indexOf()
返回 -1。
访问 JavaScript 数组方法 了解更多。
JavaScript 数组的工作原理
在 JavaScript 中,数组是一个对象。数组的索引是对象键。
由于数组是对象,因此数组元素是通过引用存储的。因此,当数组值被复制时,复制的数组中的任何更改也会反映在原始数组中。例如,
let arr = ["h", "e"];
let arr1 = arr;
arr1.push("l");
console.log(arr); // ["h", "e", "l"]
console.log(arr1); // ["h", "e", "l"]
您还可以通过在数组中传递命名键来存储值。例如,
let arr = ["h", "e"];
arr.name = "John";
console.log(arr); // ["h", "e"]
console.log(arr.name); // "John"
console.log(arr["name"]); // "John"
然而,不建议通过传递任意名称在数组中存储值。
因此,在 JavaScript 中,如果值是有序集合,应该使用数组。否则最好使用 { }
的对象。
推荐文章