零基础快速入门前端JavaScript Array 常用方法详解与实战(可用于备赛蓝桥杯Web应用开发)

数组是 JavaScript 开发中最核心的数据结构之一,灵活运用数组方法能让代码更简洁高效。本文将结合一段实战代码,逐一讲解 12 个常用 Array 方法的用法、特性及注意事项,并通过表格汇总帮助你快速掌握。

一、代码实战与方法解析

先看这段包含 12 个数组方法的代码,我们逐行解析每个方法的作用:

复制代码
// Array对象
var array1 = ["a", "s", "d", "f"];

// 1. push():末尾添加元素
array1.push("ggx", "ggx1");

// 2. unshift():开头添加元素
array1.unshift('ggx0');

// 3. pop():删除末尾元素
array1.pop();

// 4. shift():删除开头元素
array1.shift();

console.log(array1); // 输出:["a", "s", "d", "f", "ggx"]

// 5. reverse():反转数组
var array2 = array1.reverse();
console.log(array2); // 输出:["ggx", "f", "d", "s", "a"]

// 6. sort():数组排序
var arr = [1, 3, 2, 4, 6, 5];
console.log(arr.sort()); // 输出:[1, 2, 3, 4, 5, 6]

// 7. indexOf():查找元素首次出现的索引
var index = array1.indexOf("a");
console.log(index); // 输出:4

// 8. lastIndexOf():查找元素末次出现的索引
var index1 = array1.lastIndexOf("s");
console.log(index1); // 输出:3

// 9. forEach():遍历数组
var person = { name: "ggxxxx", age: 18 }
array1.forEach(function (value, index) {
    console.log(value);    // 输出数组元素
    console.log(index);    // 输出元素索引
    console.log(this.name); // 输出:"ggxxxx"(this指向person)
}, person)

// 10. splice():增删改数组
array2.splice(0, 2, "CFK", "FUCK", "CXK");
console.log(array2); // 输出:["CFK", "FUCK", "CXK", "d", "s", "a"]

// 11. concat():连接数组
console.log(arr.concat(array2)); // 输出:[1,2,3,4,5,6,"CFK","FUCK","CXK","d","s","a"]

// 12. slice():截取数组
var array3 = array2.slice(0, 3);
console.log(array3); // 输出:["CFK", "FUCK", "CXK"]

二、12 个数组方法详细讲解

1. push ():向数组末尾添加元素

  • 作用 :向数组末尾添加一个或多个元素,返回新数组的长度。

  • 语法array.push(item1, item2,..., itemX)

  • 参数:要添加的元素(可多个)。

  • 返回值:新数组的长度。

  • 是否改变原数组:是。

示例

复制代码
var arr = ["a", "b"];
arr.push("c", "d"); // 返回 4,arr 变为 ["a", "b", "c", "d"]

2. unshift ():向数组开头添加元素

  • 作用 :向数组开头添加一个或多个元素,返回新数组的长度。

  • 语法array.unshift(item1, item2,..., itemX)

  • 参数:要添加的元素(可多个)。

  • 返回值:新数组的长度。

  • 是否改变原数组:是。

示例

复制代码
var arr = ["a", "b"];
arr.unshift("x", "y"); // 返回 4,arr 变为 ["x", "y", "a", "b"]

3. pop ():删除数组末尾元素

  • 作用 :删除数组最后一个元素,返回被删除的元素。

  • 语法array.pop()

  • 参数:无。

  • 返回值:被删除的元素。

  • 是否改变原数组:是。

示例

复制代码
var arr = ["a", "b", "c"];
arr.pop(); // 返回 "c",arr 变为 ["a", "b"]

4. shift ():删除数组开头元素

  • 作用 :删除数组第一个元素,返回被删除的元素。

  • 语法array.shift()

  • 参数:无。

  • 返回值:被删除的元素。

  • 是否改变原数组:是。

示例

复制代码
var arr = ["a", "b", "c"];
arr.shift(); // 返回 "a",arr 变为 ["b", "c"]

5. reverse ():反转数组顺序

  • 作用:反转数组中元素的顺序,返回反转后的数组。

  • 语法array.reverse()

  • 参数:无。

  • 返回值:反转后的数组(原数组也会改变)。

  • 是否改变原数组:是。

示例

复制代码
var arr = [1, 2, 3];
arr.reverse(); // 返回 [3, 2, 1],arr 也变为 [3, 2, 1]

6. sort ():数组排序

  • 作用 :对数组元素进行排序,默认按字符串 Unicode 码点排序,返回排序后的数组。

  • 语法array.sort(compareFunction)

  • 参数

    • compareFunction(可选):自定义排序函数,若不传则按 Unicode 码点排序。
  • 返回值:排序后的数组(原数组也会改变)。

  • 是否改变原数组:是。

注意 :数字排序需传比较函数,否则会按字符串排序(如 [10, 2] 会变成 [10, 2],因为 "10" < "2")。

示例

复制代码
// 默认排序(字符串)
var arr1 = [10, 2, 5];
arr1.sort(); // 返回 [10, 2, 5]

// 数字升序排序
var arr2 = [10, 2, 5];
arr2.sort((a, b) => a - b); // 返回 [2, 5, 10]

// 数字降序排序
var arr3 = [10, 2, 5];
arr3.sort((a, b) => b - a); // 返回 [10, 5, 2]

7. indexOf ():查找元素首次出现的索引

  • 作用 :查找元素在数组中第一次 出现的索引,若不存在则返回 -1

  • 语法array.indexOf(item, start)

  • 参数

    • item:要查找的元素。

    • start(可选):开始查找的索引(默认从 0 开始)。

  • 返回值 :元素首次出现的索引,不存在则返回 -1

  • 是否改变原数组:否。

示例

复制代码
var arr = ["a", "b", "c", "a"];
arr.indexOf("a"); // 返回 0
arr.indexOf("a", 1); // 从索引 1 开始找,返回 3
arr.indexOf("x"); // 返回 -1

8. lastIndexOf ():查找元素末次出现的索引

  • 作用 :查找元素在数组中最后一次 出现的索引,若不存在则返回 -1

  • 语法array.lastIndexOf(item, start)

  • 参数

    • item:要查找的元素。

    • start(可选):开始查找的索引(默认从数组末尾开始)。

  • 返回值 :元素末次出现的索引,不存在则返回 -1

  • 是否改变原数组:否。

示例

复制代码
var arr = ["a", "b", "c", "a"];
arr.lastIndexOf("a"); // 返回 3
arr.lastIndexOf("a", 2); // 从索引 2 往前找,返回 0

9. forEach ():遍历数组

  • 作用 :对数组的每个元素执行一次回调函数,无返回值

  • 语法array.forEach(function(value, index, array), thisValue)

  • 参数

    • 回调函数:

      • value:当前元素。

      • index(可选):当前元素的索引。

      • array(可选):原数组。

    • thisValue(可选):回调函数中 this 的指向。

  • 返回值:无。

  • 是否改变原数组:否(但回调函数可修改原数组)。

示例

复制代码
var arr = ["a", "b", "c"];
var obj = { name: "test" };

arr.forEach(function (value, index) {
    console.log(value, index); // 输出:a 0, b 1, c 2
    console.log(this.name);     // 输出:test(this指向obj)
}, obj);

10. splice ():增删改数组(万能方法)

  • 作用 :向数组中添加、删除或替换元素,返回被删除元素组成的数组。

  • 语法array.splice(start, deleteCount, item1, item2,..., itemX)

  • 参数

    • start:开始操作的索引(必填)。

    • deleteCount:要删除的元素数量(必填,0 表示不删除)。

    • item1...:要添加的元素(可选)。

  • 返回值:被删除元素组成的数组(若未删除则返回空数组)。

  • 是否改变原数组:是。

示例

复制代码
var arr = ["a", "b", "c", "d"];

// 1. 删除:从索引 1 开始,删除 2 个
arr.splice(1, 2); // 返回 ["b", "c"],arr 变为 ["a", "d"]

// 2. 添加:从索引 1 开始,删除 0 个,添加 "x", "y"
arr.splice(1, 0, "x", "y"); // 返回 [],arr 变为 ["a", "x", "y", "d"]

// 3. 替换:从索引 1 开始,删除 2 个,添加 "m", "n"
arr.splice(1, 2, "m", "n"); // 返回 ["x", "y"],arr 变为 ["a", "m", "n", "d"]

11. concat ():连接数组

  • 作用 :连接两个或多个数组,返回新数组(原数组不变)。

  • 语法array.concat(array1, array2,..., arrayX)

  • 参数:要连接的数组(可多个)。

  • 返回值:连接后的新数组。

  • 是否改变原数组:否。

示例

复制代码
var arr1 = [1, 2];
var arr2 = [3, 4];
var arr3 = [5, 6];

var newArr = arr1.concat(arr2, arr3); // 返回 [1,2,3,4,5,6]
// arr1、arr2、arr3 仍保持不变

12. slice ():截取数组

  • 作用 :从数组中截取指定范围的元素,返回新数组(原数组不变)。

  • 语法array.slice(start, end)

  • 参数

    • start:开始截取的索引(必填,包含该索引元素)。

    • end(可选):结束截取的索引(不包含该索引元素),若不传则截取到数组末尾。

  • 返回值:截取后的新数组。

  • 是否改变原数组:否。

示例

复制代码
var arr = ["a", "b", "c", "d", "e"];

arr.slice(1, 3); // 返回 ["b", "c"](从索引 1 到 3,不包含 3)
arr.slice(2);    // 返回 ["c", "d", "e"](从索引 2 到末尾)
arr.slice(-3);   // 返回 ["c", "d", "e"](负数表示从末尾倒数,-3 即倒数第 3 个)

三、方法汇总表格

|---------------------|-------------|----------------------------------------|--------------------------------------------------------|----------------|---------|
| 方法名 | 作用 | 语法 | 参数说明 | 返回值 | 是否改变原数组 |
| push() | 末尾添加元素 | array.push(item1,...) | 要添加的元素(可多个) | 新数组长度 | 是 |
| unshift() | 开头添加元素 | array.unshift(item1,...) | 要添加的元素(可多个) | 新数组长度 | 是 |
| pop() | 删除末尾元素 | array.pop() | 无 | 被删除的元素 | 是 |
| shift() | 删除开头元素 | array.shift() | 无 | 被删除的元素 | 是 |
| reverse() | 反转数组顺序 | array.reverse() | 无 | 反转后的数组 | 是 |
| sort() | 数组排序 | array.sort(compareFn) | compareFn(可选):自定义排序函数 | 排序后的数组 | 是 |
| indexOf() | 查找元素首次索引 | array.indexOf(item, start) | item:要查找的元素;start(可选):开始索引 | 首次索引,无则返回 -1 | 否 |
| lastIndexOf() | 查找元素末次索引 | array.lastIndexOf(item, start) | item:要查找的元素;start(可选):开始索引 | 末次索引,无则返回 -1 | 否 |
| forEach() | 遍历数组 | array.forEach(fn, thisValue) | fn:回调函数(value, index, array);thisValue(可选):this 指向 | 无 | 否 |
| splice() | 增删改数组(万能方法) | array.splice(start, deleteCount,...) | start:开始索引;deleteCount:删除数量;item...:添加元素 | 被删除元素组成的数组 | 是 |
| concat() | 连接数组 | array.concat(arr1, arr2,...) | 要连接的数组(可多个) | 连接后的新数组 | 否 |
| slice() | 截取数组 | array.slice(start, end) | start:开始索引;end(可选):结束索引 | 截取后的新数组 | 否 |

总结

掌握这 12 个常用数组方法是 JavaScript 开发的基础,建议通过多练习来巩固:

  • 增删改 优先用 push/pop/shift/unshift/splice

  • indexOf/lastIndexOf/slice

  • 排序sort(注意数字排序需传比较函数);

  • 遍历forEach(无返回值);

  • 连接concat(不改变原数组)

相关推荐
January12072 小时前
Vue3打卡计时器:完整实现与优化方案
前端·javascript·css
GISer_Jing2 小时前
React全解析:从入门到精通实战指南
前端·react.js·前端框架
happymaker06262 小时前
web前端学习日记——DAY07(js交互编程)
前端·javascript·学习
小罗和阿泽2 小时前
GUI 自动化测试 pywinauto测试框架
开发语言·python·功能测试·测试工具·pytest
lizi662 小时前
uniapp uview-plus 自定义动态验证
前端·vue.js·微信小程序
尘世中一位迷途小书童2 小时前
npm 包入口指南:package.json 中的 main、module、exports
前端·javascript·架构
小杍随笔2 小时前
【Rust 语言编程知识与应用:元编程详解】
开发语言·后端·rust
●VON2 小时前
Flutter 入门指南:从基础组件到状态管理核心机制
前端·学习·flutter·von
gCode Teacher 格码致知2 小时前
Javascript提高:JavaScript Promise 超通俗解释-由Deepseek产生
开发语言·javascript