如何使用JavaScript从数字数组中生成所有2元素有序排列组合
JavaScript 实现数组二元有序排列
实现思路
有序排列要求两个元素位置不同、顺序不同视为独立结果,我们可以通过双层遍历实现:
- 第一层遍历取排列的第一个元素
- 第二层遍历取排列的第二个元素,排除下标和第一层相同的情况
- 每次匹配成功就把两个元素组成的数组存入结果集
代码实现
基础循环写法
兼容性好,逻辑清晰,适合所有场景:
function getTwoElementPermutations(numbers) { const result = []; for (let firstIdx = 0; firstIdx < numbers.length; firstIdx++) { for (let secondIdx = 0; secondIdx < numbers.length; secondIdx++) { if (firstIdx !== secondIdx) { result.push([numbers[firstIdx], numbers[secondIdx]]); } } } return result; } // 测试 const numbers = [1,2,3]; console.log(getTwoElementPermutations(numbers)); // 输出符合要求:[[1,2],[1,3],[2,1],[2,3],[3,1],[3,2]]
函数式写法
代码更简洁,适合现代JS工程场景:
const getTwoElementPermutations = numbers => numbers.flatMap((first, firstIdx) => numbers.filter((_, secondIdx) => firstIdx !== secondIdx) .map(second => [first, second]) );
内容的提问来源于stack exchange,提问作者Daywison Ferreira Leal
相关产品推荐
相关产品推荐

