javascript - 以函数方式获取子集

标签 javascript typescript

我需要实现一个函数,该函数获取一个包含 n 个元素的数组 A 和一个数字 k 作为输入,并返回一个包含 A 的所有大小为 k 的子集的数组(每个子集本身就是一个数组)。

定义函数的类型,并为该函数实现至少 3 次测试(使用断言)。它应该是 Javascript/Typescript 且功能齐全

例如:FunSubsets ([1,2,3],2) => [[1,2],[1,3],[2,3]]

有什么想法吗?

最佳答案

您可以使用带有多个参数的生成器函数来生成临时结果集。

function* subsets(values, size, parts = []) {
    var i;

    size--;
    for (i = 0; i < values.length; i++) {
        if (size) {
            yield* subsets(values.slice(i + 1), size, [...parts, values[i]]);
        } else {
            yield [...parts, values[i]];
        }
    }
}

console.log([...subsets([1, 2, 3], 2)]);
console.log([...subsets([1, 2, 3, 4, 5], 2)]);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 以函数方式获取子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49715992/

相关文章:

javascript - 从响应对象中获取特定值

c# - jQuery.ajax() 发送的空值绑定(bind)到模型中的 "null"字段

javascript - 如何创建接受参数或类型和方法的 JavaScript 函数

typescript 通用类型断言

Typescript HTMLElement 禁用 1.4 到 1.6 发生了什么 (TS2339)?

javascript - 如何在express js中间件函数中向RequestHandler声明自定义 Prop ?

javascript - 使用 JSONP 时是否可以使用 jQuery 设置请求 header 值?

javascript - getElementsByAttribute() 不是函数

javascript - 获取 URL 中的最后一个数字

angular - 错误错误 : StaticInjectorError Angular 6