关于javascript:获取一个数组的所有子集

12次阅读

共计 280 个字符,预计需要花费 1 分钟才能阅读完成。

代码如下:

function getSubSets([head, ...rest]) {
    // 如果是空数组间接返回空子集
    if (!head) return [[]];
    // 失去除第一个元素之外的子数组的所有子集
    const restSubSets = getSubSets(rest);
    // n 个元素的子集就等于 n - 1 个元素的子集合并上
    // n- 1 个元素的每一个子集加上第一个元素造成的汇合
    return [
        ...restSubSets, // n- 1 个元素的子集
        ...restSubSets.map(set => [head, ...set]) // n- 1 个元素的每一个子集加上第一个元素造成的汇合
    ];
}
正文完
 0