JavaScript 数组及其常用方法

news/2025/1/13 15:28:50 标签: javascript, 前端, 开发语言

1. JavaScript 数组概述

数组是 JavaScript 中用于存储多个值的数据结构。它可以存储不同类型的元素,并提供强大的方法来操作和管理数据。数组的元素按索引(从 0 开始)进行访问。

2. 数组的创建方式

1) 使用数组字面量
javascript">let fruits = ["苹果", "香蕉", "橘子"];
2) 使用 Array 构造函数
javascript">let numbers = new Array(5);  // 创建一个长度为 5 的空数组
let colors = new Array("红色", "蓝色", "绿色");
3) 空数组
javascript">let emptyArray = [];

3. 数组的遍历方法

1) for 循环遍历
javascript">let fruits = ["苹果", "香蕉", "橘子"];
for (let i = 0; i < fruits.length; i++) {
    console.log(fruits[i]);
}
2) for…of 循环
javascript">for (let fruit of fruits) {
    console.log(fruit);
}
3) for…in循环
javascript">for (let index in fruits) {
    console.log(fruits[index]);
}

4. 常用数组方法

方法描述示例
join()将数组中的所有元素连接成一个字符串。fruits.join(", ") // "苹果, 香蕉, 橘子"
push()向数组末尾添加一个或多个元素,返回新数组的长度。fruits.push("葡萄") // 返回新长度 4
pop()移除数组末尾的元素,返回被移除的元素。fruits.pop() // 返回 "橘子"
shift()移除数组开头的元素,返回被移除的元素。fruits.shift() // 返回 "苹果"
unshift()在数组开头添加一个或多个元素,返回新数组的长度。fruits.unshift("菠萝") // 返回新长度 4
sort()对数组元素进行排序,默认按字符编码顺序。numbers.sort() // [11, 21, 300, 34, 43]
reverse()反转数组中元素的顺序。fruits.reverse() // ["橘子", "香蕉", "苹果"]
concat()合并两个或多个数组,返回新数组。fruits.concat(["葡萄"]) // ["苹果", "香蕉", "橘子", "葡萄"]
slice()返回数组中指定开始到结束之间的元素,不修改原数组。fruits.slice(0, 2) // ["苹果", "香蕉"]
splice()删除或替换数组中的元素,并可在指定位置添加新元素。fruits.splice(1, 1, "西瓜") // ["苹果", "西瓜", "橘子"]
indexOf()返回数组中某个元素的第一个索引,未找到时返回 -1。fruits.indexOf("香蕉") // 返回 1
lastIndexOf()返回数组中某个元素的最后一个索引,未找到时返回 -1。fruits.lastIndexOf("橘子") // 返回 2
includes()检测数组是否包含某个元素,可以找到 NaN 值。[1, 2, NaN].includes(NaN) // true
toString()将数组转换为逗号分隔的字符串。[1, 2, 3].toString() // "1,2,3"
copyWithin()在数组内部复制元素到其他位置,不改变数组长度。[1, 2, 3, 4, 5].copyWithin(0, 3) // [4, 5, 3, 4, 5]
map()返回一个新数组,每个元素是原数组元素调用函数后的结果。[1, 2, 3].map(x => x * 2) // [2, 4, 6]
filter()返回一个新数组,包含通过函数测试的所有元素。[1, 2, 3].filter(x => x > 1) // [2, 3]# 1/10
fill()用指定值填充数组的所有元素。[1, 2, 3].fill(0) // [0, 0, 0]
every()检测数组中的所有元素是否都通过了指定函数的测试。[1, 2, 3].every(x => x > 0) // true
some()检测数组中是否至少有一个元素通过了指定函数的测试。[1, 2, 3].some(x => x > 2) // true
flat()将多维数组扁平化为一维数组。[1, [2, [3]]].flat(2) // [1, 2, 3]
flatMap()映射每个元素然后将结果扁平化为一个新数组。[1, 2, 3].flatMap(x => [x, x * 2]) // [1, 2, 2, 4, 3, 6]

ps:sort()方法;NaN:Not a Number;flat(Infinity)多维数组转一维。

5. 示例代码

javascript">let fruits = ["苹果", "香蕉", "橘子"];

// join() 示例
console.log(fruits.join(", "));  // 输出: "苹果, 香蕉, 橘子"

// push() 和 pop() 示例
fruits.push("葡萄");
console.log(fruits);  // 输出: ["苹果", "香蕉", "橘子", "葡萄"]
console.log(fruits.pop());  // 输出: "葡萄"

// shift() 和 unshift() 示例
fruits.shift();
console.log(fruits);  // 输出: ["香蕉", "橘子"]
fruits.unshift("菠萝");
console.log(fruits);  // 输出: ["菠萝", "香蕉", "橘子"]

// sort() 和 reverse() 示例
let numbers = [3, 1, 4, 1, 5, 9];
numbers.sort();
console.log(numbers);  // 输出: [1, 1, 3, 4, 5, 9]
numbers.reverse();
console.log(numbers);  // 输出: [9, 5, 4, 3, 1, 1]

// slice() 和 splice() 示例
let selectedFruits = fruits.slice(1, 3);
console.log(selectedFruits);  // 输出: ["香蕉", "橘子"]
fruits.splice(1, 1, "西瓜");
console.log(fruits);  // 输出: ["菠萝", "西瓜", "橘子"]

// indexOf() 和 lastIndexOf() 示例
console.log(fruits.indexOf("西瓜"));  // 输出: 1
console.log(fruits.lastIndexOf("橘子"));  // 输出: 2

// includes() 示例
console.log(fruits.includes("香蕉"));  // 输出: true
console.log([NaN].includes(NaN));      // 输出: true

// toString() 示例
console.log(fruits.toString());        // 输出: "苹果,香蕉,橘子"

// copyWithin() 示例
let numbers = [1, 2, 3, 4, 5];
numbers.copyWithin(0, 3);
console.log(numbers);                  // 输出: [4, 5, 3, 4, 5]

// map() 示例
let doubledNumbers = numbers.map(num => num * 2);
console.log(doubledNumbers);           // 输出: [8, 10, 6, 8, 10]

// filter() 示例
let filteredNumbers = doubledNumbers.filter(num => num > 8);
console.log(filteredNumbers);          // 输出: [10, 10]

// fill() 示例
let arr = [1, 2, 3, 4, 5];
arr.fill(0, 1, 4);
console.log(arr);  // 输出: [1, 0, 0, 0, 5]

// every() 示例
let allPositive = arr.every(num => num >= 0);
console.log(allPositive);  // 输出: true

// some() 示例
let hasZero = arr.some(num => num === 0);
console.log(hasZero);  // 输出: true

// flat() 示例
let nestedArr = [1, [2, [3, [4]]]];
let flatArr = nestedArr.flat(2);
console.log(flatArr);  // 输出: [1, 2, 3, [4]]

// flatMap() 示例
let mappedArr = [1, 2, 3].flatMap(x => [x, x * 2]);
console.log(mappedArr);  // 输出: [1, 2, 2, 4, 3, 6]


凡是过去,皆为序章;凡是未来,皆有可期。


http://www.niftyadmin.cn/n/5821994.html

相关文章

linux 内核OOM问题定位-SLAB_DEBUG

1&#xff0c;配置menuconfig Kernel hacking > Memory Debugging 配置 configy [*] SLUB debugging on by default [*] Enable SLUB performance statistics 配置之前 larkubuntu:~/Public/rk356x…

C语言之旅5--分支与循环【2】

本章概述 while循环for循环do-while循环break和continue语句循环嵌套goto语句彩蛋时刻&#xff01;&#xff01;&#xff01; while循环 概述&#xff1a;C语言提供了3种循环语句&#xff0c;while就是其中一种。另外2种分别是for和do-while。接下来介绍while语句。while语句和…

Web基础之什么是HTTP协议

Q&#xff1a;什么是HTTP协议&#xff1f; 概念&#xff1a;Hyper Text Transfer Protocol&#xff0c;超文本传输协议&#xff0c;规定了浏览器和服务器之间数据传输的规则。 特点&#xff1a; 1&#xff0e;基于TCP协议&#xff1a;面向连接&#xff0c;安全 2&#xff0e;基…

ip属地什么条件会改变?多角度深入探讨

IP属地&#xff0c;即IP地址的归属地&#xff0c;是互联网上设备连接时的一个关键信息&#xff0c;它通常反映了设备连接互联网时的地理位置。随着社交软件及各大平台推出IP归属地显示功能&#xff0c;IP属地的变化问题逐渐受到广大用户的关注。那么&#xff0c;IP属地在什么条…

书说 MySQL 的悲观锁和乐观锁

什么是乐观锁&#xff1f;什么是悲观锁&#xff1f; 悲观锁&#xff1a; 悲观锁是一种基于悲观态度的控制机制&#xff08;最坏的程度想&#xff0c;每次并发一定会造成阻塞&#xff09;&#xff0c;用于防止数据冲突。它采取预防性措施&#xff0c;在修改数据之前将其锁定&a…

Python----Python基础(元组 tuple,元组的创建,基本操作:访问,连接,索引,计数,长度,最大值,最小值,求和,判断,排序)

一、元组tuple 列表属于可变序列&#xff0c;可以任意修改列表中的元素。 元组属于不可变序列&#xff0c;不能修改元组中的元素。 因此&#xff0c;元组没有增加元素、修改元素、删除元素相关的方法。 二、元组的创建 2.1、使用()方式创建元组 使用圆括号 () 可以创建一个…

深度学习的加速器:Horovod,让分布式训练更简单高效!

什么是 Horovod&#xff1f; Horovod 是 Uber 开发的一个专注于深度学习分布式训练的开源框架&#xff0c;旨在简化和加速多 GPU、多节点环境下的训练过程。它以轻量级、易用、高性能著称&#xff0c;特别适合需要快速部署分布式训练的场景。Horovod 的名字来源于俄罗斯传统舞…

【Java回顾】Day6 JUC锁

JUC锁 AQS(AbstractQueuedSynchronizer)&condition AQS(AbstractQueuedSynchronizer) 队列同步器&#xff0c;以模板方式模式&#xff0c;构建锁或其他同步组件的基础框架&#xff0c;如ReentrantLock、ReentrantReadWriteLock、Semaphore、CountDownLatch等。具体的同步逻…