js获取数组的所有子集

使用javascript获取一个数组的所有子集,比如:
[1, 2, 3] 的所有子集是:
[[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]

解题思路:

假设res是一个二维空数组[[]], 遍历原数组arr,给当前结果res中的每一个子数组append arr[i],得到tempRes[[1]], 再把得到的结果加入到res当中,res变成[[], [1]],以此类推。

function allSubsets(arr){
    let res = [[]];
    for(let i = 0; i < arr.length; i++){
        const tempRes = res.map(subset => {
            const one = subset.concat([]);
            one.push(arr[i]);
            return one;
        })
        res = res.concat(tempRes);
    }
    return res;
}
allSubsets([1,2,3]); // [[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,350评论 0 3
  • 原创声明 本文系作者辛苦码字所得,欢迎分享和转载,但请在明显位置注明作者的如下信息:笔名:来碗鸡蛋面简书主页:ht...
    来碗鸡蛋面阅读 3,234评论 0 4
  • 数组排序在日常编程中用到的其实还是比较多的,比如把一组数据按时间排序,按首字母排序,按大小排序等等,那么就让我们一...
    一木_qintb阅读 13,130评论 1 2
  • 数组排序在日常编程中用到的其实还是比较多的,比如把一组数据按时间排序,按首字母排序,按大小排序等等,那么就让我们一...
    xueNoble阅读 2,178评论 0 9
  • 六一儿童节,K歌平台上一个歌友唱了首《童年的小摇车》,不记得多少年没听过这首歌了,听得我瞬间泪崩。透过泪光,...
    云彩Lyq阅读 595评论 1 0