首页 > 其他分享 >2024年你一定要知道的20种数组处理方法

2024年你一定要知道的20种数组处理方法

时间:2024-11-21 14:48:17浏览次数:3  
标签:返回 const 元素 2024 item 数组 20 array

1. 数组创建

const array = [1, 2, 3, 4, 5]; // 使用字面量创建数组
const array2 = new Array(10); // 创建一个长度为10的空数组

2. 添加元素

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

    array.push(6); // [1, 2, 3, 4, 5, 6]
    
  • unshift():向数组开头添加一个或多个元素,并返回新的长度。

    array.unshift(0); // [0, 1, 2, 3, 4, 5, 6]
    

3. 删除元素

  • pop():从数组末尾删除一个元素,并返回该元素。

    const lastElement = array.pop(); // [0, 1, 2, 3, 4, 5], lastElement = 6
    
  • shift():从数组开头删除一个元素,并返回该元素。

    const firstElement = array.shift(); // [1, 2, 3, 4, 5], firstElement = 0
    

4. 查找元素

  • indexOf():查找指定元素的索引,未找到返回 -1。

    const index = array.indexOf(3); // 2
    
  • includes():检查数组是否包含某个值,返回 true 或 false。

    const hasThree = array.includes(3); // true
    

5. 遍历数组

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

    array.forEach((item) => {
        console.log(item);
    });
    
  • map():返回一个新数组,数组中的元素是通过调用提供的函数处理原数组中的每个元素得出的。

    const squares = array.map((num) => num * num); // [1, 4, 9, 16, 25]
    

6. 过滤数组

  • filter():返回一个新数组,包含通过所提供函数测试的所有元素。
    const evenNumbers = array.filter((num) => num % 2 === 0); // [2, 4]
    

7. 排序与反转

  • sort():按升序排序数组元素,默认是按字符编码顺序。

    array.sort(); // [-1, 0, 1, 2, 3, 4, 5]
    
  • reverse():反转数组中的元素。

    array.reverse(); // [5, 4, 3, 2, 1, 0]
    

8. 合并与分割

  • concat():合并两个或多个数组,返回一个新数组。

    const newArray = array.concat([6, 7, 8]); // [1, 2, 3, 4, 5, 6, 7, 8]
    
  • slice():返回一个选定范围的新数组,不会修改原数组。

    const subArray = array.slice(1, 3); // [2, 3]
    

9. 拼接与连接

  • join():将数组中的所有元素连接成一个字符串。
    const joined = array.join('-'); // "1-2-3-4-5"
    

10. 数组去重

  • 使用 Set 可以快速进行数组去重。
    const uniqueArray = [...new Set(array)]; // [1, 2, 3, 4, 5]
    

11. 扁平化数组

如果你有包含嵌套数组的数组,可以使用 flat() 方法将其扁平化。

const nestedArray = [1, [2, 3], [4, [5, 6]]];
const flatArray = nestedArray.flat(2); // [1, 2, 3, 4, 5, 6]

12. 查找元素

  • find():返回数组中满足提供的测试函数的第一个元素。如果没有找到,则返回 undefined
const foundElement = array.find((num) => num > 2); // 找到第一个大于2的元素
  • findIndex():返回满足提供测试函数的数组元素的索引。如果没有找到,则返回 -1。
const indexOfFirstGreaterThanTwo = array.findIndex((num) => num > 2); // 返回第一个大于2的索引

13. 数组去重(额外方法)

除了使用 Set,下面是另一种使用 filter 和 indexOf 方法的去重方式:

const arrayWithDuplicates = [1, 2, 3, 1, 2, 4];
const uniqueArray = arrayWithDuplicates.filter((item, index) => {
    return arrayWithDuplicates.indexOf(item) === index;
}); // [1, 2, 3, 4]

14. 分组数组

可以使用 reduce() 方法将数组中的元素按属性分组。

const data = [
    { name: 'Alice', age: 25 },
    { name: 'Bob', age: 30 },
    { name: 'Alice', age: 28 }
];
const groupedByName = data.reduce((acc, obj) => {
    const key = obj.name;
    if (!acc[key]) {
        acc[key] = [];
    }
    acc[key].push(obj);
    return acc;
}, {});

15. 合并多个数组

除了使用 concat(),还有一种方法是使用扩展运算符(spread operator):

const array1 = [1, 2, 3];
const array2 = [4, 5, 6];
const mergedArray = [...array1, ...array2]; // [1, 2, 3, 4, 5, 6]

16. 返回数组的随机元素

可以编写一个函数,随机返回数组中的一个元素:

const getRandomElement = (arr) => arr[Math.floor(Math.random() * arr.length)];
const randomElement = getRandomElement(array); // 返回数组中的随机元素

17. shuffle(洗牌)数组

使用 Fisher-Yates 算法可以将数组随机打乱:

const shuffleArray = (array) => {
    for (let i = array.length - 1; i > 0; i--) {
        const j = Math.floor(Math.random() * (i + 1));
        [array[i], array[j]] = [array[j], array[i]]; // 交换元素
    }
    return array;
};
const shuffled = shuffleArray(array); // 返回打乱后的数组

18. 查找并替换元素

通过遍历找到特定元素并进行替换:

const replaceElement = (array, oldElement, newElement) =>
    array.map(item => item === oldElement ? newElement : item);

const updatedArray = replaceElement(array, 2, 20); // 将2替换为20

19. 合并对象数组

如果有一个包含对象的数组,可以以某个属性合并对象:

const merged = data.reduce((acc, current) => {
    const x = acc.find(item => item.name === current.name);
    if (x) {
        x.age.push(current.age);
    } else {
        acc.push({ name: current.name, age: [current.age] });
    }
    return acc;
}, []);

20. 数组转为对象

可以将数组转换为对象,通常以数组的第一个元素作为键:

const arrayToObj = (array) => {
    return array.reduce((obj, item) => {
        obj[item[0]] = item[1];
        return obj;
    }, {});
};
const obj = arrayToObj([['name', 'Alice'], ['age', 25]]); 
// { name: 'Alice', age: 25 }

标签:返回,const,元素,2024,item,数组,20,array
From: https://blog.csdn.net/m0_71963731/article/details/143850831

相关文章

  • 2025 年 AMC8 竞赛难度预测!备考的学生赶快收藏!
    距离2025年AMC8竞赛开考已不足三个月,季遇教育老师依据往年AMC8竞赛的考点分布状况以及AMC8获奖分数线,对2025年AMC8竞赛难度进行了一番前瞻性预判,正在备赛AMC8的同学可供参考!AMC8竞赛近十年获奖分数线从近几年的AMC8竞赛题目难度和获奖分数线来看,近几年......
  • kali 2021.3镜像分享
    官方下载夸克网盘KaliLinux2021.3具有以下优势:增强的OpenSSL兼容性扩大连接范围:重新配置了OpenSSL,默认允许老式过期的协议如TLS1.0和TLS1.1以及更旧的加密算法,使Kali能够连接到更多过时的服务器,增加了可攻击面,方便渗透测试人员对使用旧协议的系统进行测试.可灵活配......
  • 国标GB28181-2016平台LiteGBS国标GB28181公网直播接入设备端怎么配置GB28181参数
    LiteGBS国标GB28181公网直播是一款强大的基于国标GB28181协议的视频云服务平台,它支持多路设备同时接入,在安防领域发挥着重要作用。LiteGBS国标GB28181-2016平台可进行解码、处理、分发等服务,能将接入的视频流转换为多种格式,如RTSP、RTMP、FLV、HLS、WebRTC等,兼容全平台、全终端,满......
  • 20222307 2024-2025-1 《网络与系统攻防技术》实验六实验报告
    1.实验内容1.1本周学习内容回顾Metasploit是一个渗透测试框架,它提供了一个平台让安全专家能够开发、测试和执行漏洞利用代码。它包括了一个庞大的漏洞和漏洞利用数据库,以及许多用于辅助渗透测试的工具,如端口扫描器、漏洞扫描器和payload生成器1.2实验要求本实践目标是掌握met......
  • CSP-S 2024 邮寄
    这个人很懒,一个月之后才写游记。考的挺差的,后来想想还是写篇游记吧。10.26初赛初赛前几天都在摆。结果考试当天在车上疯狂复习linux指令。然后就看到了pwd。开考,连蒙带猜,最后发现完善程序9个A??出考场,小图灵测的97分。没什么好说的,只能说rp都叠初赛上了,有点慌。(事实上......
  • 2024网络安全学习路线 非常详细 推荐学习
    关键词:网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线首先咱们聊聊,学习网络安全方向通常会有哪些问题1、打基础时间太长学基础花费很长时间,光语言都有几门,有些人会倒在学习linux系统及命令的路上,更多的人会倒在学习语言上;2、知识点掌握程度不清楚对于网......
  • Navicat远程连接MySQL报错2003(10060)
    背景:学习黑马微服务时,使用Navicat远程连接容器中的MySQL一直报错2003(10060),原因是容器中的MySQL配置的root用户的访问连接权限,只能是本地连接。解决方式:1)查看docker容器是否启动:dockerps-a 未启动的话:(mysql是我的容器名字)dockerstartmysql2)进入mysql容器(注意空格,r......
  • C++最佳情侣身高差 2024年9月c++一级 电子学会中小学生软件编程C++等级考试一级真题答
    目录C++最佳情侣身高差一、题目要求1、编程实现2、输入输出二、算法分析三、程序编写四、程序说明五、运行结果六、考点分析C++最佳情侣身高差2024年9月C++编程等级考试一级编程题一、题目要求1、编程实现专家通过多组情侣研究数据发现,最佳的情侣身高差遵循......
  • 树状数组 Color the ball hdu 1556 线段树 洛谷p3372
    目录前言树状数组  lowbit函数  直观表述    代码   运行结果树状数组构建代码树状数组的应用  单点修改和(单点)区间查询  结合差分数组区间修改,单点查询        差分数组Colortheballhdu1556  问题描述  问题分析......
  • 如何快速让一个数组乱序,写出来
    在前端JavaScript中,快速打乱数组顺序最常用的方法是使用sort方法结合一个随机比较函数:functionshuffleArray(array){returnarray.sort(()=>Math.random()-0.5);}//示例用法:letmyArray=[1,2,3,4,5,6,7,8,9,10];letshuffledArray=shuffleArray(......