我知道在Map中的元素可以按照插入顺序进行迭代。
假设我们有以下这个map:
假设我们有以下这个map:
const a = new Map();
a.set('x', 5);
a.set('y', 10);
a.set('z', 5);
我们想找到值为5
的第一个元素,然后找到下一个具有相同值5
的元素。
// el will be 5, 10, 5...
for(const el of a) {
if(el === 0) {
// How can I iteratate over `a` starting from index(el) + 1
for (??) {}
}
}
如果我使用Array
,我们可以像下面这样做(忽略键):
const a = new Array(5, 10, 5);
for(let i = 0; i < a.length; ++i) {
if(a[i] === 5) {
// Here I can start iterating from i + 1
for(let j = i + 1; j < a.length; ++j) {
a[j] === 5 && console.log('FOUND!');
}
}
}
我对迭代器
不是很熟悉,但我认为从map中特定元素开始迭代应该是有可能的。
const x = a.get('x');
// iterate over Map `a` starting from the element that comes after x
有一个解决方案,但我并不是特别满意,那就是每次执行const elements = a.entries()
操作时获取密钥或条目的副本,这样我们就可以快速迭代它,但它会使用大量额外的内存。
Array
,但是元素可能会被添加/删除,因此我仍然需要一种快速知道每个元素位置的方法(因此Map非常适合,因为我可以根据其id
/key
直接访问元素)。 - XCSSymbol.iterator
,但它不允许分叉迭代。 - Nina ScholzMap
中查找元素x
并删除后加入的所有元素(无需迭代地查找x
)。 - XCS