能帮我解决以下问题吗?
如果counter为2,则该函数应返回inputfromparent
如果counter为3,则该函数应返回[ [1,2], [1,3] , [1,4], [1,5], [2,3], [2,4], [2,5], [3,4], [3,5], [4,5] ]
如果counter为4,则该函数应返回[ [1,2,3], [1,2,4] , [1,2,5], [1,3,4], [1,3,5], [1,4,5], [2,3,4], [2,3,5], [2,4,5], [3,4,5] ]
[ [1,2,3,4], [1,2,3,5] , [1,2,4,5], [1,3,4,5], [2,3,4,5] ]
答案 0 :(得分:0)
您可以采用递归方法,并移交其余数组和减少的计数器。
function getPairs(array, counter) {
var result = [];
if (!counter) return [[]];
array.forEach((v, i, a) =>
getPairs(a.slice(i + 1), counter - 1)
.forEach(a => result.push([v, ...a]))
);
return result;
}
const array = [1, 2, 3, 4, 5];
console.log(getPairs(array, 1).map(a => a.join(' ')));
console.log(getPairs(array, 2).map(a => a.join(' ')));
console.log(getPairs(array, 3).map(a => a.join(' ')));
console.log(getPairs(array, 4).map(a => a.join(' ')));
.as-console-wrapper { max-height: 100% !important; top: 0; }
function getPairs(array, counter) {
if (!counter) return [[]];
return array.flatMap((v, i, a) =>
getPairs(a.slice(i + 1), counter - 1).map(a => [v, ...a])
);
}
const array = [1, 2, 3, 4, 5];
console.log(getPairs(array, 1).map(a => a.join(' ')));
console.log(getPairs(array, 2).map(a => a.join(' ')));
console.log(getPairs(array, 3).map(a => a.join(' ')));
console.log(getPairs(array, 4).map(a => a.join(' ')));
.as-console-wrapper { max-height: 100% !important; top: 0; }