下面是一种使用递归的方法来实现数组全排列的JavaScript一行代码实现:\n\njavascript\nconst permute = arr => arr.length === 1 ? arr : arr.reduce((acc, curr, i) => acc.concat(permute([...arr.slice(0, i), ...arr.slice(i + 1)]).map(val => [curr, ...val])), []);\n\n\n这行代码使用了递归来生成数组的全排列。对于给定的数组arr,首先判断其长度是否为1,如果是,则直接返回该数组。否则,使用reduce方法对数组进行遍历,对于每个元素curr,将其与剩余元素组成的数组进行全排列,并将结果与当前元素curr组合在一起。最后,将所有的结果拼接在一起并返回。\n\n使用方法示例:\n\njavascript\nconsole.log(permute([1, 2, 3])); // 输出 [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]\nconsole.log(permute([1, 2, 3, 4])); // 输出 [[1, 2, 3, 4], [1, 2, 4, 3], [1, 3, 2, 4], [1, 3, 4, 2], [1, 4, 2, 3], [1, 4, 3, 2], [2, 1, 3, 4], [2, 1, 4, 3], [2, 3, 1, 4], [2, 3, 4, 1], [2, 4, 1, 3], [2, 4, 3, 1], [3, 1, 2, 4], [3, 1, 4, 2], [3, 2, 1, 4], [3, 2, 4, 1], [3, 4, 1, 2], [3, 4, 2, 1], [4, 1, 2, 3], [4, 1, 3, 2], [4, 2, 1, 3], [4, 2, 3, 1], [4, 3, 1, 2], [4, 3, 2, 1]]\n\n\n这段代码可以实现对任意长度的数组进行全排列。


原文地址: https://www.cveoy.top/t/topic/pD9X 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录