鸿蒙进阶篇-数组常用方法(一)

大家好,这里是鸿蒙开天组,今天咱们来学习一下数组的常用方法。

数组在编程中是非常常见的数据类型,毕竟需要用到的场合太多了,所以我们今天来使劲学习一下常用方法,在这里也没法一一列全,但是大家也可以根据实际需要,到mdn去搜索查询使用:

数组

一、基础操作

数组的操作,主要针对的是对数组中的数据进行查找、修改、增加 或者是删除:

操作

语法

查找

数组名[下标]

修改

数组名[下标] = 新值

增加

数组名.push(数据1, 数据2, ...)、 数组名.unshift(数据1, 数据2, ...)

删除

数组名.pop()、数组名.shift()

任意位置增加或删除

数组名.splice(操作的起始位置, 删除的个数, 新增1, 新增2, ......)

以上这个是基础部分,这里不做详细讲解,以下是演示代码,大家可以自行理解:

let names: string[] = ['小红', '小明', '大强']// 1. 查找
console.log('查找姓名', names[0])// 2. 修改
names[1] = 'Jack'
console.log('names数组修改', names)// 3.push():结尾新增
names.push('lily', '大壮')
console.log('数组names', names)// 4.unshift(): 开头新增
names.unshift('Jack')
console.log('数组names push+unshift', names)// 5.pop(): 结尾删除
names.pop()// 6.shift(): 开头删除
names.shift()console.log('数组names pop+shift', names)// 7.指定位置增删元素
names.splice(1, 1, 'jack')console.log('数组names splice', names)

 代码输出结果如下:

39aea84007164a28a67c52b229a33800.png

二、进阶操作

 下表列出了一些较为常用方法:

方法名

作用

indexof

判断元素在数组中的索引,不存在返回-1

join

根据传入内容拼接数组,默认为,返回拼接结果,字符串

forEach

遍历数组,并且将数组的每一项作为参数传入到回调函数中,无返回值

map

基于原数组,创建一个新数组

filter

根据回调函数的执行结果,筛选出符合要求的元素,返回一个新数组

find

返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined

findIndex

返回数组中满足条件第一个元素的索引。若没有找到则返回 -1。

every

返回数组中是否每一个元素都符合要求。

some

返回数组中是否有一个元素符合要求。

sort

方法的作用是对原数组的元素进行排序

reduce

数组求和

为了方便大家记忆,这里做了一下简单的归类:

1.1. indexof方法、findIndex 方法、find 方法

由于这类方法使用场景通常比较简单,所以数组的写法采用了简写,如果判断条件较为复杂,可自行查询完整写法,示例代码如下:

//数组
const foods = ['西瓜', '苹果', '桃子', '香蕉', '苹果', '桃子']//Indexof
const indexofuse = foods.indexOf('西瓜')
console.log('indexofuse', indexofuse)//findIndex
const findindexuse = foods.findIndex(item => item === '桃子')
console.log('findindexuse', findindexuse)//find
const finduse = foods.find(item => item === '香蕉')
console.log('finduse', finduse)

 输出结果如下:

fe4a80aeeed74093899e6c9c6a51dd65.png

1.2. forEach方法、map 方法、filter 方法

这三个方法放到一起,是因为它们都会遍历所有的元素,其中ForEach是没有返回值的,所以直接输出结果,map可以理解成按照指定的条件重组成一个新数组,filter就是过滤筛选,只保留符合条件的元素,示例代码如下:

// 接口
interface Fruit {id: numbername: stringtitle: string
}// 数组
const arr: Fruit[] = [{ id: 1, name: '西瓜', title: '喝西北风' },{ id: 2, name: '苹果', title: '苹苹淡淡' },{ id: 3, name: '桃子', title: '桃之夭夭' },{ id: 4, name: '香蕉', title: '百感蕉集' },
]//forEach使用
arr.forEach((item) => {console.log('foreach使用', item.id + 1, item.name + item.title)
})//map使用
const mapArr = arr.map(item => item.name + item.title)
console.log('map使用', mapArr)//filter使用
const filterArr = arr.filter(item => item.id > 2)
console.log('filter使用', JSON.stringify(filterArr))

输出结果如下:

b5f758007bea48dd8ec06c9df75142fa.png

好了,今天的分享就到这里,虽然这些数组方法都比较简单,不过也列举了十几个,如果是第一次接触的同学,还是要点时间消化的,剩下的every、some、join、sort和reduce就留待下次分享啦!

如果对你有那么一点帮助,请记得点赞收藏哦!

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/17969.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

整数唯一分解定理

整数唯一分解定理,也称为算术基本定理,是由德国数学家高斯在其著作《算术研究》中首次提出的。本文回顾整数唯一分解定理以及对应的几个重要结论。 一、整数唯一分解定理 整数唯一分解定理,也称为算术基本定理,是数论中的一个重…

对Pod做一个详细了解

文章目录 01创建一个pod02删除pod03镜像拉取策略04pod的标签05pod资源限制方法06pod的重启策略 07pod中运行多个容器08对pod内的容器执行命令09 验证多个pod中多个容器网络共享10 pod的创建流程和调度的约束方式pod的声明周期介绍pod 的健康检查健康检查的方式probe的探测方式案…

LinkedHashMap实现LRU

LRU 环境:JDK11 最近接触LRU(Least Recently Used),即最近最少使用,也称淘汰算法,在JDK中LinkedHashMap有相关实现 LRU的LinkedHashMap实现 LinkedHashMap继承HashMap。所以内存的存储结构和HashMap一样,但是LinkedH…

基于rk356x u-boot版本功能分析及编译相关(三)Makefile分析

🎏技术驱动源于热爱,祝各位学有所成。 文章目录 一、Makefile简要概述二、简要流程图三、Makefile文件具体分析大家好哈,这次因工作比较忙,文章更新拖的有些久了。哈哈,话不多说,咱们接着上次继续说u-boot的Makefile。 一、Makefile简要概述 一般要了解u-boot源码的编译…

shell(1)脚本创建执行与变量使用

shell(1)脚本创建执行与变量使用 声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章 笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流&…

第5章总体设计-5.4 硬件可行性分析

5.4 硬件可行性分析 5.4.1 硬件方案评估1. 框式产品硬件可行性分析(1)机框设计可行性。(2)单板设计可行性。(3)核心功能器件选型。(4)数据流。 2. 盒式产品硬件可行性分析3. 终端产品…

TOIS24|推荐公平性的反事实解释

论文:https://arxiv.org/pdf/2307.04386 代码:https://anonymous.4open.science/r/CFairER-anony/. 关键词:可解释推荐;公平;反事实的解释;强化学习 1 动机 现有推荐系统存在的公平性问题,例如性别歧视和种族偏见等,…

week 3 - Assembly Language

Important Instructions and Syntax 此内容是以MASM编写的,你将使用Visual C/C内联汇编来编程,因此数据元素的声明有所不同,但概念和指令集(instruction sets)相同。 一、General-Purpose Registers 寄存器是CPU内的命名存储单元…

6.C操作符详解,深入探索操作符与字符串处理

C操作符详解,深入探索操作符与字符串处理 C语言往期系列文章目录 往期回顾: C语言是什么?编程界的‘常青树’,它的辉煌你不可不知VS 2022 社区版C语言的安装教程,不要再卡在下载0B/s啦C语言入门:解锁基础…

校园导航系统

关于数据结构的一个整理: 1、链式有序表的合并 2、栈 3、队列 4、二叉树、哈夫曼报文 5、图论 6、十大排序 7、校园导航系统 文章目录 校园导航系统演示示例代码示例1、弧结点和顶点节点2、Map节点3、用户 校园导航系统 采用C语言涉及了数据库相关的操作&am…

食品进出库库存管理发货开单软件下载 佳易王食品进出库管理系统操作教程

一、概述 【软件资源下载在文章最后】 食品进出库库存管理发货开单软件下载 食品进出库管理系统操作教程 商品进出库管理软件是一款操作简便的进出库管理软件,管理入库,出库,库存,同时打印发货单。 二、软件操作教程 第一步&a…

C++和OpenGL实现3D游戏编程【连载18】——加载OBJ三维模型

1、本节课要实现的内容 以前我们加载过立方体木箱,立方体的顶点数据都是在程序运行时临时定义的。但后期如果模型数量增多,模型逐步复杂,我们就必须加载外部模型文件。这节课我们就先了解一下加载OBJ模型文件的方法,这样可以让编程和设计进行分工合作,极大丰富我们游戏效…

二刷代码随想录第四天

24. 两两交换链表中的节点 设置个虚拟头节点画图理清楚节点之间的指向关系 class Solution { public:ListNode* swapPairs(ListNode* head) {ListNode* dummyHead new ListNode(0);dummyHead->next head;ListNode* cur dummyHead;while (cur->next ! nullptr &&…

【Linux】proc 文件系统详解

/proc 文件系统是 Linux 内核提供的一种特殊的文件系统,它主要用于显示内核和进程的信息。/proc 文件系统是一个虚拟文件系统,这意味着它并不占用实际的磁盘空间,而是由内核动态生成的内容。通过 /proc 文件系统,用户可以读取系统…

Linux文件系统

Linux文件系统 Linux 文件系统是 Linux 操作系统中用于存储和组织文件的结构。以下是一些关键概念和常见的 Linux 文件系统类型: 关键概念 文件系统层次结构:Linux 使用统一的文件系统层次结构,所有文件和目录都从根目录 / 开始。 目录结构…

[1.15.X-1.18.X]Herobrine-吾王HIM插件

Herobrine 这款插件99%自定义!为你的服务器增加一个吓人的HIM,该插件是一个非玩家角色,由 Minecraft 的粉丝创建。从来没有真正成为 Minecraft 游戏的一部分,这个故事是他在 Minecraft 世界里出没,Mojang 通过开玩笑地将“移除的 …

CTF 取证技术

01 流量分析 筛选器的使用 追踪流 文件导出 实例:通过筛选 http ,推断出 攻击者很可能 是 执行一个 文件上传 的攻击hack.php 很可能就是 攻击者 上传的 webshell依次进行 http 的 追踪流 查看查看到最后,发现响应中 有 PK文件头的存在 ,说…

【GPIO】3.上/下 拉电阻通讯中的作用

一.什么是上/下拉电阻 上拉、下拉电阻统一称为拉电阻,作用是将状态不确定的信号线通过一个电阻将其箝位至高电平(上拉)或低电平(下拉) 这里有人可能会疑惑? 什么叫状态不确定的信号? 在数字电…

分享购:前期布局与后期问题解决策略

在当今电商与消费模式不断创新的时代,分享购作为一种极具潜力的商业模式,正受到越来越多的关注。然而,要想让分享购真正发挥优势、实现可持续发展,无论是前期的精心布局,还是后期妥善应对各类问题,都至关重…

51c大模型~合集46

我自己的原文哦~ https://blog.51cto.com/whaosoft/11908179 #HITS 北大李戈团队提出大模型单测生成新方法,显著提升代码测试覆盖率 单元测试是软件开发流程中的一个关键环节,主要用于验证软件中的最小可测试单元,函数或模块是否按预期工作…