LZM

理解javascript数组的添加、删除、遍历和转换等操作

2024-12-05 11:12:09

1.数组添加元素

push():向数组末尾添加一个或多个元素,并返回新的数组长度。

let arr = [1, 2];
arr.push(3);
console.log(arr); // 输出: [1, 2, 3]

unshift():向数组开头添加一个或多个元素,并返回新的数组长度。

let arr = [2, 3];
arr.unshift(1);
console.log(arr); // 输出: [1, 2, 3]

2.数组删除元素

pop():删除数组的最后一个元素,并返回该元素。

let arr = [1, 2, 3];
let removedElement = arr.pop();
console.log(arr); // 输出: [1, 2]
console.log(removedElement); // 输出: 3

shift():删除数组的第一个元素,并返回该元素。

let arr = [1, 2, 3];
let removedElement = arr.shift();
console.log(arr); // 输出: [2, 3]
console.log(removedElement); // 输出: 1

3.修改数组元素

通过索引直接访问和修改数组中的元素。

let arr = [1, 2, 3];
arr[1] = 5; // 将第二个元素修改为 5
console.log(arr); // 输出: [1, 5, 3]

4.查找元素

indexOf():返回数组中某个元素首次出现的位置索引,如果元素不存在则返回 -1。

let arr = [10, 20, 30];
console.log(arr.indexOf(20)); // 输出: 1
console.log(arr.indexOf(40)); // 输出: -1

includes():检查数组中是否包含某个元素,返回布尔值。

let arr = [10, 20, 30];
console.log(arr.includes(20)); // 输出: true
console.log(arr.includes(40)); // 输出: false

5.数组转换和提取子数组

slice():返回数组的浅拷贝,包含指定的开始和结束索引之间的所有元素。

let arr = [1, 2, 3, 4, 5];
let newArr = arr.slice(1, 3); // 从索引 1 到 3 (不包含 3)
console.log(newArr); // 输出: [2, 3]

splice():从数组中添加或删除元素,可以替换数组中的一部分。

let arr = [1, 2, 3, 4];
arr.splice(2, 1, 5, 6); // 从索引 2 开始,删除 1 个元素,并插入 5 和 6
console.log(arr); // 输出: [1, 2, 5, 6, 4]

6.数组排序和反转

sort():默认按字符串 Unicode 编码顺序排序。如果要进行数字排序,需传入比较函数。

let arr = [3, 1, 4, 1, 5, 9];
arr.sort(); // 按字母顺序排序(注意:排序为字符串)
console.log(arr); // 输出: [1, 1, 3, 4, 5, 9]

arr.sort((a, b) => a - b); // 数字升序排序
console.log(arr); // 输出: [1, 1, 3, 4, 5, 9]

reverse():反转数组元素的顺序。

let arr = [1, 2, 3];
arr.reverse();
console.log(arr); // 输出: [3, 2, 1]

7.数组的高阶函数

map():创建一个新数组,数组中的元素是通过调用提供的函数对每个元素进行处理后的结果。

let arr = [1, 2, 3];
let doubled = arr.map(x => x * 2);
console.log(doubled); // 输出: [2, 4, 6]

filter():创建一个新数组,包含所有通过提供函数测试的元素。

let arr = [1, 2, 3, 4, 5];
let evenNumbers = arr.filter(x => x % 2 === 0);
console.log(evenNumbers); // 输出: [2, 4]

reduce():对数组中的每个元素执行一个累加器函数,返回一个单一的值。

let arr = [1, 2, 3, 4];
let sum = arr.reduce((acc, currentValue) => acc + currentValue, 0);
console.log(sum); // 输出: 10

forEach():对数组中的每个元素执行提供的函数。

let arr = [1, 2, 3];
arr.forEach(x => console.log(x)); // 输出: 1 2 3

some():检查数组中是否至少有一个元素满足提供的条件,返回布尔值。

let arr = [1, 2, 3];
console.log(arr.some(x => x > 2)); // 输出: true

every():检查数组中的每个元素是否都满足提供的条件,返回布尔值。

let arr = [1, 2, 3];
console.log(arr.every(x => x > 0)); // 输出: true

8.数组去重

去重可以使用 Set 或通过 filter() 实现。

let arr = [1, 2, 2, 3, 4, 4];
let uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // 输出: [1, 2, 3, 4]

let arr = [1, 2, 2, 3, 4, 4];
let uniqueArr = arr.filter((value, index, self) => self.indexOf(value) === index);
console.log(uniqueArr); // 输出: [1, 2, 3, 4]

End