【发布时间】:2017-06-13 19:42:38
【问题描述】:
按照How can I add a key/value pair to a JavaScript object? 和Best way to store a key=>value array in JavaScript?,我构建了我的键/值映射(对象)。
我像下面这样构建它,MyFunc 返回一个数组:
let MyMap = {}; // object
for(let i = 0; i < MyContainer.length; i++)
{
// create the key (id of current element) and set its value as array of elements (result from MyFunc)
await MyFunc(MyContainer[i]).then((response) => MyMap[MyContainer[i].id] = response);
}
MyMap 看起来像这样:
MyMap =
{
1: [Object, Object, Object, …] // 13 elements
2: [Object, Object, Object, …] // 7 elements
3: [Object, Object, Object, …] // 4 elements
4: [Object]
5: [Object]
6: [Object, Object, Object, …] // 5 elements
7: [Object, Object, Object, …] // 9 elements
}
我想迭代我的地图(键),但从具有最小值(最小数组)的键开始。
因此,我想:
- 访问 MyContainer 并选择 id 为
4的元素,然后执行操作(具有最小数组:1 个元素) - 然后访问 MyContainer 并选择具有 id
5的元素,然后做一些事情 - 然后
3 - 然后
6 - ..等
- 最后访问 MyContainer 并选择 id 为
1的元素并执行操作(最大数组:13 个元素)
现在既然myMap是一个对象,那我就不能排序了。
我怎样才能做到这一点?
【问题讨论】:
-
好吧,用数组代替。
-
Map 有一个 keys() 函数,只需对它们进行排序和迭代即可。
-
@FrederikHansen 这不是
Map,他只是在调用常规对象文字myMap
标签: javascript key-value