JS中对象属性遍历的顺序总结

在 JavaScript 中,对象的遍历顺序是有规则的,不同类型的键(整数索引、字符串键、Symbol)在遍历中的顺序有所不同。以下是详细的总结。

规则总结

  1. 整数索引的键

    • 所有被解释为整数的属性键(即整数或类似整数的字符串键,如 0, '0', '1')会按照数值升序进行遍历。
    • 注意:即使是 '0'0,它们在遍历时会被视作相同的整数索引,按数值升序排列。
  2. 非整数的字符串键

    • 这些属性按照属性被插入对象的顺序遍历。
    • 例如,'a', 'b', 'name' 等非整数的字符串属性会按照你定义它们的顺序进行遍历。
  3. Symbol

    • 如果对象中有 Symbol 属性,这些属性将被遍历,但它们会在所有整数索引和字符串键之后出现,且按定义的顺序排列。

具体遍历顺序(适用于 for...inObject.keys() 等)

  1. 整数索引的属性(按数值升序排列)。
  2. 字符串键的属性(按插入顺序排列)。
  3. Symbol 属性(按插入顺序排列,且位于最后)。

示例

let obj = {
  '0': 'zero',
  '100': 'one hundred',
  a: 'letter a',
  2: 'two',
  b: 'letter b',
  '01': 'leading zero one',
  1: 'one',
};

for (let key in obj) {
  console.log(key);
}

解释:

  1. 0, '100', 2, '01', 1 会被解释为整数索引,因此按数值升序排列。
  2. 其他字符串键如 'a', 'b' 会按照定义顺序排列。
  3. Symbol 键将位于最后(如果有的话)。

实际输出顺序:

0
1
2
100
a
b
01

总结:

  • 整数键(包括字符串形式的整数)会首先按照数值升序排列
  • 非整数字符串键按照插入顺序排列。
  • Symbol 键在最后按插入顺序排列

这种规则在大多数遍历方法中都是一致的,包括 for...inObject.keys()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值