如果不是enum,而是对象,那么遍历怎么保持原有顺序
时间: 2024-10-15 20:23:06 浏览: 16
如果你有一个自定义的对象数组而不是枚举,并希望在遍历时保持插入时的顺序,JavaScript 的 Map 或者 Object 没有内置的方法保证键的顺序。然而,从 ES6 开始,Array 对象提供了一个新的特性 `Symbol.toStringTag`,你可以通过它来存储一个值的顺序信息。比如:
```javascript
let orderedObjects = [
{name: 'A', order: 1},
{name: 'B', order: 0},
{name: 'C', order: 2}
];
// 添加顺序信息
orderedObjects.forEach((obj, index) => {
obj[Symbol.toStringTag] = index;
});
// 遍历时,顺序会被保留
for(let i = 0; i < orderedObjects.length; i++) {
console.log(orderedObjects[i].name, orderedObjects[i][Symbol.toStringTag]);
}
```
但这并不是所有浏览器都支持,也不是标准的 JavaScript 行为。对于跨浏览器的应用,可能需要使用第三方库或者更传统的方式,比如 JSON.stringify 和 JSON.parse 时传递一个排序数组。
阅读全文