function subset(nums) { var result = []; dfs(0, [], nums, result); console.log(result); } function dfs(index, path, nums, res) { if(path.length === 2) res.push([...path]) for (var i = index; i < nums.length; i += 1){ path.push(nums[i]); dfs(i + 1, path, nums, res) path.pop(); } } subset([1,2,3,4]);