乐趣区

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

代码如下:

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 个元素的每一个子集加上第一个元素造成的汇合
    ];
}
退出移动版