如何使用迭代器嵌套循环?

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);
  }
}

以上是关于如何使用迭代器嵌套循环?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Django视图中使用for循环返回每次迭代[关闭]

如何通过迭代器访问向量中的嵌套对?

使用嵌套循环迭代 m^n 组合[关闭]

11 第一类对象 闭包 迭代器

如何使用 lambda 流迭代嵌套列表?

您如何将其转换为迭代函数而不是使用嵌套循环进行递归?