相关文章推荐
勤奋的风衣  ·  Ford-Fulkerson ...·  4 月前    · 
紧张的小熊猫  ·  scRNA分析|自定义你的箱线图-统计检验, ...·  4 月前    · 
傻傻的馒头  ·  高性能异步框架Celery入坑指南-阿里云开 ...·  3 月前    · 
爱喝酒的圣诞树  ·  【分享】所有浏览器可共享数据的JS插件 - ...·  1 年前    · 
深情的遥控器  ·  坚果云招聘·  2 年前    · 
有情有义的汤圆  ·  市人大到颍东开展乡村振兴促进法执法检查-阜阳 ...·  3 年前    · 
有情有义的柠檬  ·  南星带你看2022QS世界大学金融学科排名- ...·  3 年前    · 
侠义非凡的脆皮肠  ·  Python and REST APIs: ...·  3 年前    · 
Code  ›  JS获取Object的第一个元素-阿里云开发者社区
js 云计算 object 阿里
https://developer.aliyun.com/article/1212270
卖萌的海豚
2 年前
产品 解决方案 文档与社区 免费试用 定价 云市场 合作伙伴 支持与服务 了解阿里云
备案 控制台 登录/注册
开发者社区
首页
探索云世界
新手上云 云上应用构建 云上数据管理 云上探索人工智能
云计算 弹性计算 无影 存储 网络 倚天
云原生 容器 serverless 中间件 微服务 可观测 消息队列
数据库 关系型数据库 NoSQL数据库 数据仓库 数据管理工具 PolarDB开源 向量数据库

热门

Modelscope模型即服务 弹性计算 云原生 数据库 物联网 云效DevOps 龙蜥操作系统 平头哥 钉钉开放平台
大数据 大数据计算 实时数仓Hologres 实时计算Flink E-MapReduce DataWorks Elasticsearch 机器学习平台PAI 智能搜索推荐
人工智能 机器学习平台PAI 视觉智能开放平台 智能语音交互 自然语言处理 多模态模型 pythonsdk 通用模型
开发与运维 云效DevOps 钉钉宜搭 支持服务 镜像站 码上公益
问产品
动手实践
考认证
TIANCHI大赛
活动广场
任务中心 飞天Club技术沙龙 训练营 话题 开发者评测 乘风者计划 阿里云MVP 直播
下载
镜像站 技术资料 插件
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议 》和 《 阿里云开发者社区知识产权保护指引 》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单 进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

获取Object的第一个元素

目前遇到个业务需要获取Object中的第一个元素,具体背景这里不详细介绍,如果将数据改为数组的形式改动量较大,需要改接口定义层面,所以这里简单偷个懒

Object中的键值迭代是无序的


JS基础中的知识,也经常在一些八股文中看到就是 Map 和 Object 中的区别之一就是Object中的属性是无序的,而Map中的属性是有序的,那我们如何保证我们通过 Object.keys 等方法和 for in 方法迭代的第一个属性是我们预期的第一个呢?

const sym = Symbol('foo')
const obj = {
    a: '123',
    b: '456',
    c: '789',
    1: '111',
    2: '222',
    3: '333',
console.log(Object.keys(obj));
console.log(Object.values(obj));


[ '1', '2', '3', 'a', 'b', 'c' ]
[ '111', '222', '333', '123', '456', '789' ]


可以看到这个顺序并不是我们实际定义的顺序,实际情况可能比上述情况更加复杂,所以一般来说都说Obect内部属性的顺序是无序的。

Object中的键值迭代是有规律的


这就需要我们我们去确定对象迭代的内部机制是什么,这里直接说结论,具体过程可以参考 这篇文章 和 这篇文章

  1. 数字或者字符串类型的数字当作key时,输出是按照升序排序的
  2. 普通的字符串类型的key,就按照定义的顺序输出
  3. Symbols也是和字符串类型的规则一样
  4. 如果是三种类型的key都有,那么顺序是 1 -> 2 -> 3

我这里主要考虑我的业务场景,根据上述结论,也就是说我们只要key是字符串,那么其遍历顺序就是我们定义的顺序,这就符合我们的需求了

回到主题:获取第一个元素


最后,就是获取对象的第一个元素了,这里就不使用什么 for 循环再 break 了,这里可以直接使用解构优雅地获取:

const obj = {
    a: '123',
    b: '234',
    c: '345',
const [ firstItem ] = Object.values(obj); // 这里
console.log(firstItem);
 
推荐文章
勤奋的风衣  ·  Ford-Fulkerson 最大流算法-阿里云开发者社区
4 月前
紧张的小熊猫  ·  scRNA分析|自定义你的箱线图-统计检验,添加p值,分组比较p值-阿里云开发者社区
4 月前
傻傻的馒头  ·  高性能异步框架Celery入坑指南-阿里云开发者社区
3 月前
爱喝酒的圣诞树  ·  【分享】所有浏览器可共享数据的JS插件 - EtherDream - 博客园
1 年前
深情的遥控器  ·  坚果云招聘
2 年前
有情有义的汤圆  ·  市人大到颍东开展乡村振兴促进法执法检查-阜阳市颍东区人大常委会
3 年前
有情有义的柠檬  ·  南星带你看2022QS世界大学金融学科排名-南星留学
3 年前
侠义非凡的脆皮肠  ·  Python and REST APIs: Interacting With Web Services – Real Python
3 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号