JavaScript 中的排列
当面对为整数数组生成排列的任务时,最简单的方法是使用递归算法。给定的代码片段中介绍了一种旨在处理字符串的算法。然而,当尝试调整此算法以处理整数数组时,由于方法对不同数据类型的操作方式存在差异,因此出现了挑战。
为了解决此问题,需要对该算法进行修改版本,它考虑了整数的特定行为。下面介绍的一种优雅的解决方案包含了以下注意事项:
function permutator(inputArr) { var results = []; function permute(arr, memo) { var cur, memo = memo || []; for (var i = 0; i < arr.length; i++) { cur = arr.splice(i, 1); if (arr.length === 0) { results.push(memo.concat(cur)); } permute(arr.slice(), memo.concat(cur)); arr.splice(i, 0, cur[0]); } return results; } return permute(inputArr); }
该算法对输入数组的副本进行操作,确保原始数组保持不变。它递归地探索所有可能的组合并将排列存储在数组的数组中。
或者,也可以使用此算法的 ES6 (2015) 版本:
const permutator = (inputArr) => { let result = []; const permute = (arr, m = []) => { if (arr.length === 0) { result.push(m) } else { for (let i = 0; i < arr.length; i++) { let curr = arr.slice(); let next = curr.splice(i, 1); permute(curr.slice(), m.concat(next)) } } } permute(inputArr) return result; }
此版本使用箭头函数和默认参数值以获得更简洁的语法。功能保持不变,为提供的数组生成排列。
以上是如何在 JavaScript 中生成整数数组的排列?的详细内容。更多信息请关注PHP中文网其他相关文章!