javascript - 使用 mergeSets Generator 函数合并集合

标签 javascript arrays set generator

在此主题中:Simplest way to merge ES6 Maps/Sets?

我找到了一种合并 Set 或 Map 的好方法

let set3 = new Set(function*() { 产量* set1; 产量* set2; }());

我想创建一个可以合并任意数量的集合的函数,如下所示:

function  mergeSets() { 
    return new Set(function*() {
        for (const set of arguments) {
            yield* set
        }
    }())
}

我有办法吗?当我测试这个时,我得到一个空集作为结果

最佳答案

您在内部函数*内部使用您的参数,该函数会在没有参数的情况下立即调用,因此参数 为空,因此迭代它会导致返回的集合为空。我将在外部函数中使用参数剩余语法,将参数收集到适当的数组中,然后您可以迭代该数组:

(打开浏览器控制台,而不是代码片段控制台,查看生成的 Set:)

const set1 = new Set(['1', '2', '3']);
const set2 = new Set(['4', '5', '6']);
const set3 = new Set(['7', '8', '9']);

const mergeSets = (...sets) => new Set(function* () {
  for (const set of sets) yield* set;
}());

console.log(
  mergeSets(set1, set2, set3)
);

关于javascript - 使用 mergeSets Generator 函数合并集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52093911/

相关文章:

arrays - 如何在 SwiftUI 中计算数组的总计、小计和平均值

Javascript/jQuery - 将项目推送到数组和从数组中删除

java - 在构造函数中设置set的内容

Java:检索 ArrayList 的随机不连续子列表(最有效的方法)

javascript - 从 URL 末尾获取整数 - 传递到 RedBean

Javascript 数据表填充数据问题(未返回错误)

javascript - 在javascript中从dd-MMM-yyyy到dd-MM-yyyy的日期格式转换

Javascript 将两个 var 与已知值进行比较不起作用?

c++ - 使用值列表的模板数组初始化

python - 加权集覆盖问题的最优算法?