js数组方法宝典
添加与删除元素
- push() : 在数组末尾添加一个或多个元素。
let arr = [1, 2, 3]
arr.push(4)
- pop() : 从数组末尾删除一个元素并返回该元素。
let arr = [1, 2, 3]
let last = arr.pop()
- shift() : 从数组开头删除一个元素并返回该元素。
let arr = [1, 2, 3]
let first = arr.shift()
- unshift() : 在数组开头添加一个或多个元素。
let arr = [1, 2, 3]
arr.unshift(0)
迭代方法
- forEach() : 对数组的每个元素执行提供的函数。
let arr = [1, 2, 3]
arr.forEach(num => console.log(num))
- map() : 创建一个新数组,包含调用原数组每个元素后返回的结果。
let arr = [1, 2, 3]
let doubled = arr.map(num => num * 2)
- filter() : 创建一个新数组,包含所有通过测试的元素。
let arr = [1, 2, 3, 4]
let filtered = arr.filter(num => num > 2)
- reduce() : 将数组的所有元素汇总为一个值。
let arr = [1, 2, 3, 4]
let sum = arr.reduce((acc, num) => acc + num, 0)
- reduceRight() : 与
reduce() 类似,但是从右到左进行操作。
查找与搜索
- find() : 返回数组中满足提供的测试函数的第一个元素的值。
let arr = [1, 2, 3, 4]
let found = arr.find(num => num > 2)
- findIndex() : 返回数组中满足提供的测试函数的第一个元素的索引。
let arr = [1, 2, 3, 4]
let index = arr.findIndex(num => num > 2)
- indexOf() : 返回指定元素在数组中的第一个索引,如果不存在则返回 -1。
let arr = [1, 2, 3]
let index = arr.indexOf(2)
- includes() : 判断数组是否包含某个元素,返回布尔值。
let arr = [1, 2, 3]
let hasTwo = arr.includes(2)
数组变换
- slice() : 返回数组中选定的部分复制到一个新数组。
let arr = [1, 2, 3, 4]
let newArr = arr.slice(1, 3)
- splice() : 从数组中添加/删除项目。
let arr = [1, 2, 3, 4]
arr.splice(1, 1, 5)
- concat() : 将两个或多个数组合并为一个新数组。
let arr1 = [1, 2]
let arr2 = [3, 4]
let newArr = arr1.concat(arr2)
排序与反转
- sort() : 对数组的元素进行排序。
let arr = [3, 1, 4, 2]
arr.sort()
- reverse() : 反转数组中的元素顺序。
let arr = [1, 2, 3]
arr.reverse()
其他方法
- join() : 将数组的所有元素合并为一个字符串。
let arr = ['a 'b', 'c'];
let str = arr.join('-');
- toString() : 返回数组的字符串表示。
let arr = [1, 2, 3]
let str = arr.toString()
- flat() 将嵌套的数组扁平化。
let arr = [1, [2, 3], [4, [5]]]
let flatArr = arr.flat(1)
- flatMap() : 首先映射每个元素,通过给定的映射函数,然后将结果扁平化。
let arr = [1, 2, 3]
let flatMapped = arr.flatMap(x => [x, x * 2])
数组方法综合运用代码示例
let tasks = [];
function addTask(task) {
tasks.push(task);
console.log(`任务 "${task}" 已添加.`);
}
function removeLastTask() {
const removed = tasks.pop();
console.log(`任务 "${removed}" 已删除.`);
}
function removeFirstTask() {
const removed = tasks.shift();
console.log(`任务 "${removed}" 已删除.`);
}
function addTaskToStart(task) {
tasks.unshift(task);
console.log(`任务 "${task}" 已添加到开头.`);
}
function getTaskSlice(start, end) {
const slice = tasks.slice(start, end);
console.log(`获取的任务片段: ${slice}`);
}
function replaceTask(index, task) {
tasks.splice(index, 1, task);
console.log(`在索引 ${index} 位置替换为 "${task}".`);
}
function showTasks() {
tasks.forEach((task, index) => {
console.log(`${index}: ${task}`);
});
}
function getTaskLengths() {
const lengths = tasks.map(task => task.length);
console.log(`任务长度: ${lengths}`);
}
function filterTasks(criteria) {
const filtered = tasks.filter(task => task.includes(criteria));
console.log(`过滤后的任务: ${filtered}`);
}
function countTotalCharacters() {
const total = tasks.reduce((sum, task) => sum + task.length, 0);
console.log(`所有任务字符总数: ${total}`);
}
function checkIfAllTasksAreStrings() {
const allStrings = tasks.every(task => typeof task === 'string');
console.log(`所有任务都是字符串: ${allStrings}`);
}
function checkIfAnyTaskContains(criteria) {
const anyContains = tasks.some(task => task.includes(criteria));
console.log(`是否有任务包含 "${criteria}": ${anyContains}`);
}
function findFirstMatch(criteria) {
const found = tasks.find(task => task.includes(criteria));
console.log(`找到的第一个匹配任务: ${found}`);
}
function sortTasks() {
tasks.sort();
console.log(`排序后的任务: ${tasks}`);
}
addTask("学习JavaScript");
addTask("完成作业");
addTask("阅读书籍");
addTask("锻炼身体");
showTasks();
removeLastTask();
showTasks();
addTaskToStart("吃早餐");
showTasks();
getTaskSlice(1, 3);
replaceTask(1, "参加会议");
showTasks();
getTaskLengths();
filterTasks("书");
countTotalCharacters();
checkIfAllTasksAreStrings();
checkIfAnyTaskContains("锻");
findFirstMatch("锻");
sortTasks();
showTasks();