JS获取Object的第一个元素

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

获取Object的第一个元素

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

Object中的键值迭代是无序的


JS基础中的知识,也经常在一些八股文中看到就是MapObject中的区别之一就是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);


123


目录
相关文章
|
1月前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
1月前
|
设计模式 JavaScript 前端开发
js中new和object.creat区别
【10月更文挑战第29天】`new` 关键字和 `Object.create()` 方法在创建对象的方式、原型链继承、属性初始化以及适用场景等方面都存在差异。在实际开发中,需要根据具体的需求和设计模式来选择合适的方法来创建对象。
|
1月前
|
JavaScript 前端开发 开发者
.js的dom元素操作
【10月更文挑战第29天】通过灵活运用这些 DOM 元素操作方法,JavaScript 可以实现丰富的网页交互效果,如动态更新页面内容、响应用户操作、创建和删除页面元素等。在实际开发中,开发者可以根据具体的需求和场景,选择合适的 DOM 元素操作方法来实现所需的功能,为用户提供更加流畅和动态的网页体验。
|
3月前
|
存储 前端开发 JavaScript
前端基础(二)_JavaScript变量、JavaScript标识符、JavaScript获取元素、JavaScript的鼠标事件
本文介绍了JavaScript变量的声明和使用、标识符的命名规则、如何获取和操作HTML元素,以及JavaScript的鼠标事件处理,通过示例代码展示了这些基础知识点在实际开发中的应用。
49 2
前端基础(二)_JavaScript变量、JavaScript标识符、JavaScript获取元素、JavaScript的鼠标事件
|
2月前
|
移动开发 JavaScript 前端开发
原生js如何获取dom元素的自定义属性
原生js如何获取dom元素的自定义属性
85 4
|
2月前
|
JavaScript
js删除数组中已知下标的元素
js删除数组中已知下标的元素
51 4
|
2月前
|
JavaScript 前端开发 索引
JS 删除数组元素( 5种方法 )
JS 删除数组元素( 5种方法 )
77 1
|
3月前
|
JavaScript 前端开发
JavaScript HTML DOM 元素 (节点)
JavaScript HTML DOM 元素 (节点)
31 2
|
2月前
|
JavaScript 前端开发 大数据
在JavaScript中,Object.assign()方法或展开语法(...)来合并对象,Object.freeze()方法来冻结对象,防止对象被修改
在JavaScript中,Object.assign()方法或展开语法(...)来合并对象,Object.freeze()方法来冻结对象,防止对象被修改
41 0
|
3月前
|
JavaScript 前端开发
js删除数组最后一个元素
js删除数组最后一个元素