当前位置: 首页 > news >正文

JS操作数组方法学习系列(1)

目录

    • 数组添加元素 (push)
    • 数组移除末尾元素 (pop)
    • 数组添加元素到开头 (unshift)
    • 数组移除开头元素 (shift)
    • 数组查找元素索引 (indexOf)
    • 数组反向查找元素索引 (lastIndexOf)
    • 数组切割 (slice)
    • 数组连接 (concat)
    • 数组元素查找 (find 和 findIndex)
    • 数组元素过滤 (filter)
    • 数组元素映射 (map)
    • 数组元素归并 (reduce)
    • 数组元素迭代 (forEach)
    • 数组元素去重 (filter 和 Set)
    • 数组元素排序和去重 (sort 和 Set)
    • 数组元素计数 (reduce 和 Object)
    • 数组元素计数 (reduce 和 Map)


👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!


数组添加元素 (push)

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

示例:

const fruits = ['apple', 'banana'];
const newLength = fruits.push('cherry');
// newLength: 3, fruits: ['apple', 'banana', 'cherry']

常见场景: 在数组中动态添加新数据。

数组移除末尾元素 (pop)

作用: 移除并返回数组的最后一个元素。

示例:

const fruits = ['apple', 'banana', 'cherry'];
const removedFruit = fruits.pop();
// removedFruit: 'cherry', fruits: ['apple', 'banana']

常见场景: 移除最后一个元素,如栈操作。

数组添加元素到开头 (unshift)

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

示例:

const fruits = ['banana', 'cherry'];
const newLength = fruits.unshift('apple');
// newLength: 3, fruits: ['apple', 'banana', 'cherry']

常见场景: 在数组开头插入新数据。

数组移除开头元素 (shift)

作用: 移除并返回数组的第一个元素。

示例:

const fruits = ['apple', 'banana', 'cherry'];
const removedFruit = fruits.shift();
// removedFruit: 'apple', fruits: ['banana', 'cherry']

常见场景: 移除第一个元素,如队列操作。

数组查找元素索引 (indexOf)

作用: 返回数组中第一个匹配元素的索引,如果未找到则返回-1。

示例:

const numbers = [1, 2, 3, 4, 5];
const index = numbers.indexOf(3);
// index: 2

常见场景: 查找元素在数组中的位置。

数组反向查找元素索引 (lastIndexOf)

作用: 返回数组中最后一个匹配元素的索引,如果未找到则返回-1。

示例:

const numbers = [1, 2, 3, 4, 3, 5];
const lastIndex = numbers.lastIndexOf(3);
// lastIndex: 4

常见场景: 反向查找元素在数组中的位置。

数组切割 (slice)

作用: 从数组中提取一个子数组,不会修改原数组。

示例:

const fruits = ['apple', 'banana', 'cherry', 'date'];
const slicedFruits = fruits.slice(1, 3);
// slicedFruits: ['banana', 'cherry']

常见场景: 提取部分数组,而不影响原始数据。

数组连接 (concat)

作用: 连接两个或多个数组,并返回一个新数组。

示例:

const fruits1 = ['apple', 'banana'];
const fruits2 = ['cherry', 'date'];
const combinedFruits = fruits1.concat(fruits2);
// combinedFruits: ['apple', 'banana', 'cherry', 'date']

常见场景: 将多个数组合并成一个。

数组元素查找 (find 和 findIndex)

作用: find返回数组中满足条件的第一个元素,findIndex返回数组中满足条件的第一个元素的索引。

示例:

const numbers = [1, 2, 3, 4, 5];
const evenNumber = numbers.find(num => num % 2 === 0);
const evenIndex = numbers.findIndex(num => num % 2 === 0);
// evenNumber: 2, evenIndex: 1

常见场景: 查找满足特定条件的元素或索引。

数组元素过滤 (filter)

作用: 创建一个新数组,其中包含满足条件的所有元素。

示例:

const numbers = [1, 2, 3, 4, 5];
const evenNumbers = numbers.filter(num => num % 2 === 0);
// evenNumbers: [2, 4]

常见场景: 从数组中过滤出满足条件的元素。

数组元素映射 (map)

作用: 创建一个新数组,其中包含对原数组中的每个元素应用函数后的结果。

示例:

const numbers = [1, 2, 3, 4, 5];
const squaredNumbers = numbers.map(num => num * num);
// squaredNumbers: [1, 4, 9, 16, 25]

常见场景: 对数组中的每个元素进行转换或映射。

数组元素归并 (reduce)

作用: 将数组中的元素累积为一个值,通过指定的函数。

示例:

const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((acc, num) => acc + num, 0);
// sum: 15

常见场景: 对数组中的元素执行归纳操作,如计算总和或找到最大值。

数组元素迭代 (forEach)

作用: 遍历数组中的每个元素,对每个元素执行提供的函数。

示例:

const fruits = ['apple', 'banana', 'cherry'];
fruits.forEach(fruit => console.log(fruit));
// 输出: 'apple', 'banana', 'cherry'

常见场景: 执行对每个元素的操作,例如打印或发送请求。

数组元素去重 (filter 和 Set)

作用: 使用filterSet对象来去重数组中的元素。

示例:

const numbers = [1, 2, 2, 3, 4, 4, 5];
const uniqueNumbers = numbers.filter((value, index, self) => self.indexOf(value) === index);
// 或者
const uniqueNumbers2 = [...new Set(numbers)];
// uniqueNumbers: [1, 2, 3, 4, 5]

常见场景: 去除数组中的重复元素。

数组元素排序和去重 (sort 和 Set)

作用: 使用sort方法进行排序,然后使用Set对象去重。

示例:

const numbers = [5, 2, 9, 2, 1, 5];
const sortedUniqueNumbers = [...new Set(numbers.sort((a, b) => a - b))];
// sortedUniqueNumbers: [1, 2, 5, 9]

常见场景: 对数组元素进行排序并去重。

数组元素计数 (reduce 和 Object)

作用: 使用reduce和对象来计算数组中每个元素的出现次数。

示例:

const fruits = ['apple', 'banana', 'cherry', 'apple', 'banana'];
const fruitCount = fruits.reduce((acc, fruit) => {acc[fruit] = (acc[fruit] || 0) + 1;return acc;
}, {});

常见场景: 计算数组中元素的出现频率。

数组元素计数 (reduce 和 Map)

作用: 使用reduceMap对象来计算数组中每个元素的出现次数。

示例:

const fruits = ['apple', 'banana', 'cherry', 'apple', 'banana'];
const fruitCount = fruits.reduce((acc, fruit) => {acc.set(fruit, (acc.get(fruit) || 0) + 1);return acc;
}, new Map());

常见场景: 计算数组中元素的出现频率,同时保留键值对。

相关文章:

JS操作数组方法学习系列(1)

目录 数组添加元素 (push)数组移除末尾元素 (pop)数组添加元素到开头 (unshift)数组移除开头元素 (shift)数组查找元素索引 (indexOf)数组反向查找元素索引 (lastIndexOf)数组切割 (slice)数组连接 (concat)数组元素查找 (find 和 findIndex)数组元素过滤 (filter)数组元素映射…...

翻牌闯关游戏

翻牌闯关游戏 3关:关卡由少至多12格、20格、30格图案:12个玩法:点击两张卡牌,图案一到即可消除掉 记忆时长(毫秒):memoryDurationTime:5000 可配置:默认5000 提示游戏玩法:showTipsFlag:1 可…...

CilckHouse创建表

一、引擎 一开始没注意有引擎选择,要用什么引擎去官方文档看看自己建的表适合什么引擎,大部分用MergeTree 二、用sql语句生成表 1、MergeTree引擎 原文地址:https://blog.csdn.net/qq_21383435/article/details/122812921?ops_request_misc%…...

高级运维学习(八)Ceph 概述与部署

ceph概述 ceph可以实现的存储方式: 块存储:提供像普通硬盘一样的存储,为使用者提供“硬盘”文件系统存储:类似于NFS的共享方式,为使用者提供共享文件夹对象存储:像百度云盘一样,需要使用单独的客…...

【图像处理】VS编译opencv源码,并调用编译生成的库

背景 有些时候我们需要修改opencv相关源码, 这里介绍怎么编译修改并调用修改后的库文件。 步骤 1、下载相关源码工具: 下载opencv4.8源码并解压 https://down.chinaz.com/soft/40730.htm 下载VS2019,社区版免费 https://visualstudio.micro…...

STM32 EtherCAT 总线型(1 拖 4)步进电机解决方案

第 1 章 概述  技术特点  支持标准 100M/s 带宽全双工 EtherCAT 总线网络接口及 CoE 通信协议一 进一出(RJ45 接口),支持多组动态 PDO 分组和对象字典的自动映射,支持站 号 ID 的自动设置与保存,支持 SDO 的…...

Postman应用——测试脚本Test Script

文章目录 Test Script脚本CollectionFolderRequest 解析响应体断言测试 测试脚本可以在Collection、Folder和Request的Pre-request script 和 Test script中编写,测试脚本可以检测请求响应的各个方面,包括正文、状态代码、头、cookie、响应时间等&#x…...

JS的网络状态以及强网弱网详解

文章目录 1. online 和 offline 事件2. navigator.onLine2.1 什么是 navigator.connection?2.2 如何使用 navigator.connection?2.3 总结 1. online 和 offline 事件 online 和 offline 事件是浏览器自带的两个事件,可以通过添加事件监听器来…...

大数据-kafka学习笔记

Kafka Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。 Kafka可以用作Flink应用程序的数据源。Flink可以轻松地从一个或多个Kafka主题中消费数据流。这意味着您可以使用Kafka来捕获和传输…...

详述RPA项目管理流程,RPA项目管理流程是什么?

RPA(Robotic Process Automation,机器人流程自动化)是一种通过软件机器人模拟人类在计算机上执行重复性任务的技术。RPA可以帮助企业提高工作效率、降低成本、减少错误并提高客户满意度。然而,为了确保RPA项目的成功实施&#xff…...

爬虫 — Js 逆向

目录 一、概念1、爬虫2、反爬虫3、加密解密4、加密5、步骤 二、常用加密方式1、加密方式2、常见加密算法3、JS 中常见的算法4、MD5 算法4.1、MD5 加密网站4.2、特点 5、DES/AES 算法6、RSA 算法7、base64 算法 三、环境配置1、node.js 环境配置2、PyCharm 环境配置 一、概念 1…...

Python 网络爬取的时候使用那种框架

尽管现代的网站多采取前后端分离的方式进行开发了,但是对直接 API 的调用我们通常会有 token 的限制和可以调用频率的限制。 因此,在一些特定的网站上,我们可能还是需要使用网络爬虫的方式获得已经返回的 JSON 数据结构,甚至是处理…...

CentOS7安装源设置

此处的安装源地址需要填写:(适用于centos7) http://mirrors.aliyun.com/centos/7/os/x86_64/...

pool = multiprocessing.Pool()报错:module object has no attribute Pool

pool multiprocessing.Pool()报错:module object has no attribute Pool,为什么? 我很抱歉,前面提供的回答是错误的。在Python的multiprocessing模块中,确实有一个名为Pool的类。如果你在使用multiprocessing.Pool()…...

Linux Shell 实现一键部署podman

podman 介绍 使用 Podman 管理容器、Pod 和映像。从本地环境中无缝使用容器和 Kubernetes,Podman 提供与 Docker 非常相似的功能,它不需要在你的系统上运行任何守护进程,并且它也可以在没有 root 权限的情况下运行。 Podman 可以管理和运行…...

Biome-BGC生态系统模型与Python融合技术

Biome-BGC是利用站点描述数据、气象数据和植被生理生态参数,模拟日尺度碳、水和氮通量的有效模型,其研究的空间尺度可以从点尺度扩展到陆地生态系统。 在Biome-BGC模型中,对于碳的生物量积累,采用光合酶促反应机理模型计算出每天…...

Matlab图像处理-区域描述

一旦一幅图像的目标区域被确定,我们往往用一套描述子来表示其特性。选择区域描述子的动机不单纯为了减少在区域中原始数据的数量,而且也应有利于区别带有不同特性的区域。因此,当目标区域有大小、旋转、平移等方面的变化时,针对这…...

openGauss学习笔记-69 openGauss 数据库管理-创建和管理普通表-更新表中数据

文章目录 openGauss学习笔记-69 openGauss 数据库管理-创建和管理普通表-更新表中数据 openGauss学习笔记-69 openGauss 数据库管理-创建和管理普通表-更新表中数据 修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行、所有行或者指定的部分行。还可以独立更新…...

Flink RowData 与 Row 相互转化工具类

RowData与Row区别 (0)都代表了一条记录。都可以设置RowKind,和列数量Aritry。 (1)RowData 属于Table API,而Row属于Stream API (2)RowData 属于Table内部接口,对用户不友…...

企业架构LNMP学习笔记48

数据结构类型操作: 数据结构:存储数据的方式 数据类型 算法:取数据的方式,代码就把数据进行组合,计算、存储、取出。 排序算法:冒泡排序、堆排序 二分。 key: key的命名规则不同于一般语言…...

docker部署neo4j

拉取镜像 docker pull neo4j:3.5.35-community查看镜像 [rootlocalhost data]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE neo4j 3.5.35-community 3548ff943256 13 months ago 446MB创建容器并运行 docker run -d …...

融云观察:AI Agent 是不是游戏赛道的下一个「赛点」?

本周四 融云直播间,点击报名~ ChatGPT 的出现,不仅让会话成为了未来商业的基本形态,也把大家谈论 AI 的语境从科技产业转向了 AI 与全产业的整合。 关注【融云全球互联网通信云】了解更多 而目前最热衷于拥抱生成式 AI 的行业中&#xff0c…...

运用谷歌浏览器的开发者工具,模拟搜索引擎蜘蛛抓取网页

第一步:按压键盘上的F12键打开开发这工具,并点击右上角三个小黑点 第二步:选择More tools 第三步:选择Network conditions 第四步:找到User agent一列,取消复选框的勾选 第五步:选择谷歌爬虫…...

uni-app 点击蒙版层时关闭自定义弹窗

click.stop&#xff1a;用于阻止冒泡 click.stop 标签范围内&#xff0c;点击任何区域(包括 click 点击事件)都不会关闭弹窗。标签范围外会关闭弹窗 click.stop 标签内的 click 等事件&#xff1a;如果事件内有关闭弹窗的代码可关闭弹窗 在 template 中 <view class&quo…...

【红包雨功能的】环境部署(弹性伸缩、负载均衡、Redis读写分离、云服务器部署)

文章目录 创建环境创建专用网络VPC安全组创建云服务器打包部署2. Java环境启动项目开机启动任意服务1. 制作服务文件2. 制作启动脚本3. 制作停止脚本4. 增加执行权限5. 设置开机启动 创建镜像继续创建多台云服务器负载均衡弹性伸缩redis的报警规则白名单1. LAMP 环境1. 安装Apa…...

基于Java的设计模式-策略模式

策略模式就是定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 基本概念 策略模式主要是解决多种算法相似的情况下&#xff0c;使用if...else所带来的复杂和难以维护。当存在系统中有多个类&#xff0c;但是区分它们的是只是它们的直接行为&#xff0c;那我们…...

小程序多种姿势更换文章

概述 简单的文章切换demo&#xff0c;通过倒计时、摇一摇、双击进行文章切换 详细 直接看效果图吧&#xff01;比较简单&#xff0c;主要是练习一下... 小程序不带双击事件&#xff0c;可以记录第一次单击事件和第二次单机事件进行双击操作。 1、摇一摇是通过调用官方的 …...

读书笔记-《ON JAVA 中文版》-摘要25[第二十二章 枚举]

文章目录 第二十二章 枚举1. 基本功能1.1 基本 enum 特性 2. 方法添加2.1 方法添加2.2 覆盖 enum 的方法 3 switch 语句中的 enum4. values 方法的神秘之处5. 实现而非继承6. 随机选择7. 使用接口组织枚举8. 使用 EnumSet 替代 Flags9. 使用 EnumMap10. 常量特定方法11. 本章小…...

DNDC模型建模方法及应用

DNDC&#xff08;Denitrification-Decomposition&#xff0c;反硝化-分解模型&#xff09;是目前国际上最为成功的模拟生物地球化学循环的模型之一&#xff0c;自开发以来&#xff0c;经过不断完善和改进&#xff0c;从模拟简单的农田生态系统发展成为可以模拟几乎所有陆地生态…...

Kafka为什么是高性能高并发高可用架构

目录 1 前言2 顺序写入3 页缓存4 零拷贝5 Broker 性能6 流数据并行7 总结 1 前言 我们都知道 Kafka 是基于磁盘进行存储的&#xff0c;但 Kafka 官方又称其具有高性能、高吞吐、低延时的特点&#xff0c;其吞吐量动辄几十上百万。小伙伴们是不是有点困惑了&#xff0c;一般认为…...

神华公司两学一做网站/怎么做一个网站平台

计算机类专业课第 1 页(共 8 页)河南省2018 年普通高等学校对口招收中等职业学校毕业生考试计算机类专业课考生注意&#xff1a;所有答案都要写在答题卡上&#xff0c;写在试题卷上无效一、选择题(数据库应用基础-Access2003 1-25 题&#xff1b;计算机网络技术 26-50题。每小题…...

wordpress的标签有什么用/seo整站优化多少钱

一、前言 时间子系统中的tick device layer主要涉及kernel/time/tick-*相关的文件&#xff0c;本文的主要内容就是从high level层次&#xff08;不纠缠在具体的每行代码&#xff09;描述tick device layer的运作逻辑。 如果说每个.c文件是一个模块的话&#xff0c;我们可以首…...

教育网站如何做seo/百度网盘官方

(1) 在application.properties文件中添加自定义属性(单个属性使用)&#xff1b; 在这里我们新建一个maven java project进行测试&#xff0c;取名为&#xff1a;spring-boot-hello4。 对pom.xml基本的spring boot 配置&#xff0c;主要用到的一个核心依赖是&#xff1a; 1 2 3 …...

HTTPS网站做CDN加速/哈尔滨seo优化软件

文章目录知识点解决思路案例知识点 如果字段有数据&#xff0c;则oracle不允许直接修改表的字段类型如果字段没有数据&#xff0c;可以修改表字段类型 解决思路 先对原来的字段从命名添加一个新的字段&#xff0c;跟原来字段名字一致&#xff0c;添加备注将数据复制到新的字…...

网站建设及数据分析/成都调查事务所

k个男生和k个女生站成一列&#xff0c;前面k个是男生&#xff0c;后面k个是女生&#xff0c;从第一个男生开始报数&#xff0c;报到队列最后一个同学&#xff0c;循环到队首继续报&#xff0c;并且如果一个同学报到的数是m&#xff0c;这个同学就出列&#xff0c;然后后面的同学…...

网站开发 . 漫游指南/企业培训课程名称大全

目录 贝叶斯定理 贝叶斯分类 朴素贝叶斯分类器 贝叶斯网络 VS 朴素贝叶斯 贝叶斯网络 条件概率表集合 贝叶斯网络的构造…...