相关文章推荐
高兴的烈酒  ·  【Python进制】_Python进制问题与 ...·  1 月前    · 
欢快的手电筒  ·  如何配置条件分支节点_数据管理 ...·  1 月前    · 
活泼的泡面  ·  SQL Server ...·  1 月前    · 
腼腆的小刀  ·  全模态-大模型服务平台百炼-阿里云·  1 月前    · 
温文尔雅的菠萝  ·  IE调试网页之一:F12 ...·  3 周前    · 
打篮球的自行车  ·  "在批处理结束时检测到不可提交的事务。该事务 ...·  1 年前    · 
很拉风的烈酒  ·  如何在 Kali Linux ...·  2 年前    · 
博学的紫菜汤  ·  postgreSQL窗口函数总结-腾讯云开发 ...·  2 年前    · 
幸福的领带  ·  WPF程序如何设置任务栏和系统托盘图标_哔哩 ...·  2 年前    · 
想旅行的凉面  ·  如何防止MATLAB打印虚假空格和使用错误字体?·  2 年前    · 
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);
 
推荐文章
高兴的烈酒  ·  【Python进制】_Python进制问题与内容精选-阿里云
1 月前
欢快的手电筒  ·  如何配置条件分支节点_数据管理 DMS-阿里云帮助中心
1 月前
活泼的泡面  ·  SQL Server 2008备份数据库失败,拒绝访问的原因-阿里云开发者社区
1 月前
腼腆的小刀  ·  全模态-大模型服务平台百炼-阿里云
1 月前
温文尔雅的菠萝  ·  IE调试网页之一:F12 开发人员工具简介-阿里云开发者社区
3 周前
打篮球的自行车  ·  "在批处理结束时检测到不可提交的事务。该事务将回滚。"的解决方案-CSDN博客
1 年前
很拉风的烈酒  ·  如何在 Kali Linux 中设置代理服务器_linux_weixin_0010034-Linux
2 年前
博学的紫菜汤  ·  postgreSQL窗口函数总结-腾讯云开发者社区-腾讯云
2 年前
幸福的领带  ·  WPF程序如何设置任务栏和系统托盘图标_哔哩哔哩_bilibili
2 年前
想旅行的凉面  ·  如何防止MATLAB打印虚假空格和使用错误字体?
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号