数组对象转为Map
时间:2022-07-28
本文章向大家介绍数组对象转为Map,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
点击上方蓝色字体,关注我们
数据类型的转换在业务代码中肯定很常见,因为不同的数据结构使用不同的情况。比如数组适合下标快速检索,对象适合根据键快速检索。
举个例子:一个下拉选择框
数据结构:arrApps
[
{
'appId': 'test-app',
'name': 'test-app',
'remarks': null,
'roles': [
'ADMIN',
'DEVELOPER',
],
},
{
'appId': 'test2-app',
'name': 'test2-app',
'remarks': null,
'roles': [
'ADMIN',
'DEVELOPER',
],
},
]
展示如下:
业务代码中还有一个 currentApp 供其他地方使用:
{
'appId': 'test-app',
'name': 'test-app',
'remarks': null,
'roles': [
'ADMIN',
'DEVELOPER',
],
}
每次切换下拉框的时候,需要更改 currentApp 的值。
暴力方法就是每次根据下拉框的值,循环遍历数据然后对比:
val:下拉框选择的值
for(arr){
if(val == arr[i].name){
currentApp = arr[i]
break
}
}
这样的时间复杂度为O(n),空间复杂度 O(1)。
那能不能把时间复杂度降到O(1),当然有喽!
那就是先把 arrApps 转为一个以 name 为 key 的 Map 结构 mapApps:
{
'test-app'=>{name:'test-app',remarks:null},
'test2-app'=>{name:'test2-app',remarks:null},
}
那检索的时候就很快啦:
val:下拉框选择的值
currentApp = mapApps.get(val)
如何转换呢?
Map 语法:
new Map([iterable])
let myMap = new Map([
[1, 'one'],
[2, 'two'],
[3, 'three'],
])
我们先把 arrApps 转为二维数组:
arrApps.map(item=>[item.name,item])
全部代码:
mapApps = new Map(arrApps.map(item=>[item.name,item]))
目前10000+人已关注加入我们
- Java常用工具类之发送邮件
- Spring Boot入门
- IDEA使用
- JFinal极速开发框架使用笔记(二) 两个问题,一个发现
- JFinal极速开发框架使用笔记(三) 分析Model和ActiveRecord
- JFinal极速开发框架使用笔记(四) _JFinalDemoGenerator实体类生成及映射自动化
- Python语言做数据探索教程
- Java常用工具类之时间转换(注释乱码,全)
- Java常用工具类之RegexpUtils,正则表达式工具类
- 短信接口发送验证码倒计时以及提交验证
- Java常用工具类之IO流工具类
- JFinal极速开发框架使用笔记
- JavaWeb项目之电话本,两个版本,以及总结反思
- 工作中问题记录
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 微信开发系列之二 - 在微信公众号里开发一个自动应答的图灵机器人
- 微信开发系列之一 - 微信公众号开发的开发环境搭建
- SAP Commerce开发之如何找到某个页面对应的JSP实现页面
- 如何用代码读取SAP CRM的Categorization Schema
- 如何使用代码创建SAP CRM Service Request subject
- 微信开发系列之八 - 微信公众号的地图集成
- vivo 悟空活动中台 - 栅格布局方案
- 使用literal或者绑定变量执行SAP HANA SQL语句
- dotnet OpenXML 如何判断是形状还是文本
- dotnet 执行 docker 容器 error MSB4018 CreateAppHost 任务意外失败可能原因
- dotnet 定制 ILogger 实现
- dotnet 在 UOS 国产系统上安装 Mono 开发工具的方法
- dotnet 在 Linux 下的 GDI 库对 EMF 图片格式的支持
- 跟牛老师一起学WEBGIS——WEBGIS基础(WMS服务)
- 【STM32H7】第6章 RL-TCPnet V7.X底层驱动说明