找到 JavaScript 中数组的所有可能的子集
我们需要编写一个 JavaScript 函数,它以数组作为第一个和唯一的参数。
该函数应构造并返回可以从原数组生成的所有可能的子数组。
例如 −
如果输入数组是 −
const arr = [1, 2, 3];
那么输出应该是 −
const output = [ [2], [1], [3], [1,2,3], [2,3], [1,2], [1, 3], [] ];
子数组的顺序并不重要。
示例
以下是代码 −
const arr = [1, 2, 3]; const findAllSubsets = (arr = []) => { arr.sort(); const res = [[]]; let count, subRes, preLength; for (let i = 0; i < arr.length; i++) { count = 1; while (arr[i + 1] && arr[i + 1] == arr[i]) { count += 1; i++; } preLength = res.length; for (let j = 0; j < preLength; j++) { subRes = res[j].slice(); for (let x = 1; x <= count; x++) { if (x > 0) subRes.push(arr[i]); res.push(subRes.slice()); } } }; return res; }; console.log(findAllSubsets(arr));
输出
以下是控制台输出 −
[ [], [ 1 ], [ 2 ], [ 1, 2 ], [ 3 ], [ 1, 3 ], [ 2, 3 ], [ 1, 2, 3 ] ]
广告