JavaScript 中数组Array、对象Object,字符串String的用法

在 JavaScript 中,Array 是一个内置对象,它提供了一些静态方法和属性,用于操作和处理对象。以下是一些常见的 Array 方法:

  • 创建与转换类​
方法 说明 返回值 是否修改原数组
Array.from() 类数组或可迭代对象转数组(支持映射函数) 新数组
Array.of() 创建包含任意类型元素的新数组 新数组
concat() 合并多个数组或值 新数组
// 类数组转数组
const arr1 = Array.from('abc'); // ['a', 'b', 'c']
const arr2 = Array.from({
   
    length: 3 }, (_, i) => i + 1); // [1, 2, 3]
// 创建新数组
const arr3 = Array.of(1, 2, 3); // [1, 2, 3]
const arr4 = Array(3).fill(0); // [0, 0, 0]

// 合并数组
const arr5 = [1].concat([2], 3); // [1, 2, 3]
const arr6 = [...[1], ...[2], 3]; // [1, 2, 3]

  • 修改类(原地修改)​
方法 说明 返回值 是否修改原数组 示例
push() 末尾添加元素 新数组长度 arr.push(4) → 返回长度,arr 末尾增加元素
pop() 删除末尾元素 被删除的元素 arr.pop() → 返回删除的元素
shift() 删除开头元素 被删除的元素 arr.shift() → 返回删除的元素
unshift() 开头添加元素 新数组长度 arr.unshift(0) → 返回长度,arr 开头增加元素
splice() 增删元素(核心修改方法) 被删除元素组成的数组 arr.splice(1,1,‘a’) → 删除并替换元素
sort() 排序(默认按字符串 Unicode 排序) 排序后的原数组 arr.sort((a,b) => a-b) → 数值升序
reverse() 反转数组顺序 反转后的原数组 arr.reverse() → 原数组反转
// 增删元素
const arr = [1, 2, 3];
arr.push(4); // arr = [1, 2, 3, 4]
arr.pop(); // arr= [1, 2, 3]
arr.shift(); // arr = [2, 3]
arr.unshift(0); // arr = [0, 2, 3]
arr.splice(1, 1, 'a'); // arr = [0, 'a', 3]

// 删除:删除索引1开始的2个元素
let arr = [1, 2, 3, 4];
arr.splice(1, 2); // arr = [1, 4]

// 插入:索引1处插入"a", "b"
arr.splice(1, 0, "a", "b"); // arr = [1, "a", "b", 4]

// 替换:索引1处替换1个元素为"x"
arr.splice(1, 1, "x"); // arr = [1, "x", "b", 4]

// 排序
const arr = [3, 1, 2];
arr.sort((a, b) => a - b); // [1, 2, 3]

// 反转
const arr = [1, 2, 3];
arr.reverse(); // [3, 2, 1]
  • 访问与查询类​
方法 说明 返回值 是否修改原数组 示例
slice() 截取子数组(含头不含尾) 新数组 arr.slice(1, 2) → [2]
indexOf() 查找元素首次出现的索引 索引或 -1 arr.indexOf(2) → 1
lastIndexOf() 查找元素最后一次出现的索引 索引或 -1 arr.lastIndexOf(2) → 1
find() 返回首个满足条件的元素 元素或 undefined arr.find(item => item > 1) → 2
findIndex() 返回首个满足条件的元素索引 索引或 -1 arr.findIndex(item => item > 1) → 1
includes() 判断是否包含某元素 true/false arr.includes(2) → true
every() 所有元素是否满足条件 true/false arr.every(item => item > 1) → false
some() 至少一个元素满足条件 true/false arr.some(item => item > 1) → true
// 截取子数组
const arr = [1, 2, 3];
arr.slice(1, 2); // [2] // 从索引1开始,截取到索引2(不含)的元素

// 查找元素
const arr = [1, 2, 3];
arr.indexOf(2); // 1 // 返回元素2的索引

// 查找元素
const arr = [1, 2, 3];
arr.lastIndexOf(2); // 1 // 返回元素2的最后一次出现的索引

// 查找元素
const arr = [1, 2, 3];
arr.find(item => item > 1); // 2 // 返回第一个大于1的元素

// 查找元素
const arr = [1, 2, 3];
arr.findIndex(item => item > 1); // 1 // 返回第一个大于1的元素的索引

const users = [{
   
   id: 1, name: "Alice"}, {
   
   id: 2, name: "Bob"}];
users.find(u => u.id === 2); // {id: 2, name: "Bob"}
users.findIndex(u => u.id === 2); // 1

// 特殊值定位(如 NaN)
[1, NaN, 3].findIndex(n => Number.isNaN(n)); // 1

// 判断是否包含元素
const arr = [1, 2, 3];
arr.includes(2); // true // 判断数组是否包含元素2

// 所有元素是否满足条件
const arr = [1, 2, 3];
arr.every(item => item > 1); // false // 判断数组所有元素是否都大于1

// 至少一个元素满足条件
const arr = [1, 2, 3];
arr.some(item => item > 1); // true // 判断数组是否至少有一个元素大于1

  • 迭代与转换类​
方法 说明 返回值 是否修改原数组 示例
forEach() 遍历数组 undefined arr.forEach(item => console.log(item))
map() 映射每个元素,生成新数组 新数组 arr.map(item => item * 2)
filter() 过滤满足条件的元素 新数组 arr.filter(item => item > 1)
reduce() 累计计算为单个值(左→右) 累计结果 arr.reduce((acc, cur) => acc + cur, 0)
reduceRight() 累计计算(右→左) 累计结果 arr.reduceRight((acc, cur) => acc + cur, 0)
join(separator) 数组元素拼接为字符串 字符串 arr.join(’,’)
toString() 数组转字符串(逗号分隔) 字符串 arr.toString()
// 遍历数组
const arr = [1, 2, 3];
arr.forEach(item => console.log(item)); // 1 2 3

// 映射数组
const arr = [1, 2, 3];
const newArr = arr.map(item => item * 2); // [2, 4, 6]

// 格式化日期
const dates = ['2025-01-01'];
dates.map(d => new Date(d).toLocaleDateString('zh-CN')); // ["2025/1/1"]

// 过滤数组
const arr = [1, 2, 3];
const newArr = arr.filter(item => item > 1); // [2, 3]

// 累计计
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会飞的鱼先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值