如何使用迭代器嵌套循环?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用迭代器嵌套循环?相关的知识,希望对你有一定的参考价值。
我有以下代码:
let array = [0,1,2];
for (let i = 0; i < array.length; i++)
for (let j = i + 1; j < array.length; j++) // j starts at i+1
console.log(array[i], array[j]);
但由于重复的项目,我决定将我的数组转换为地图。现在我想在地图上迭代如下:
let map = array.reduce(countIntoMap, new Map());
for (let [i,counti] of map.entries())
for (let [j,countj] of map.entries()) // j starts at 0
console.log(array[i], array[j]);
我怎么能从i + 1
开始循环?
编辑:这是重要的函数,因为我想知道每个元素的出现次数。
function countIntoMap (map, element) {
if ( ! map.has(element) )
map.set(element, 1);
else
map.set(element, map.get(element) + 1);
return map;
}
答案
这将创建{key, count}
对象的数组,它可以根据需要进行迭代
let array = [0, 1, 2, 2];
const uniq = array.reduce((acc, a) => {
let idx = acc.findIndex(b => b.key === a);
idx === -1 ? acc.push({ key: a, count: 1}) : ++acc[idx].count;
return acc;
}, []);
for (let i = 0; i < uniq.length; ++i) {
for (let j = i + 1; j < uniq.length; ++j) {
console.log(uniq[i].count, uniq[j].count);
}
}
以上是关于如何使用迭代器嵌套循环?的主要内容,如果未能解决你的问题,请参考以下文章