JavaScript 对象没有存储属性的顺序(根据规范)。使用 for...in
循环时,Firefox 似乎保留了属性定义的顺序。这种行为是我可以依赖的吗?如果没有,是否有一段实现有序哈希类型的 JavaScript 代码?
原文由 hekevintran 发布,翻译遵循 CC BY-SA 4.0 许可协议
JavaScript 对象没有存储属性的顺序(根据规范)。使用 for...in
循环时,Firefox 似乎保留了属性定义的顺序。这种行为是我可以依赖的吗?如果没有,是否有一段实现有序哈希类型的 JavaScript 代码?
原文由 hekevintran 发布,翻译遵循 CC BY-SA 4.0 许可协议
2016 年的 JavaScript,特别是 EcmaScript 6,支持 Map
内置类。
Map 对象按插入顺序迭代其元素——for…of 循环为每次迭代返回一个 [key, value] 数组。
这就是你所需要的。 (不过,我想知道为什么这是这个数据结构描述中的第一个信息。)
例如,
m = new Map()
m.set(3,'three')
m.set(1,'one')
m.set(2,'two')
m // Map { 3 => 'three', 1 => 'one', 2 => 'two' }
[...m.keys()] // [ 3, 1, 2 ]
或 文档 中的示例:
var myMap = new Map();
myMap.set(0, 'zero');
myMap.set(1, 'one');
myMap // Map { 0 => 'zero', 1 => 'one' }
for (var [key, value] of myMap) {
console.log(key + " = " + value);
}
for (var key of myMap.keys()) {
console.log(key);
}
for (var value of myMap.values()) {
console.log(value);
}
for (var [key, value] of myMap.entries()) {
console.log(key + " = " + value);
}
原文由 Ondra Žižka 发布,翻译遵循 CC BY-SA 3.0 许可协议
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
这个问题作为最热门的搜索结果出现。在找不到有序哈希后,我就写了这个小 coffescript。希望这将帮助人们登陆此页面: