如何获得一个数组,其中包含另一个数组的 n 个元素的所有可能排列?
How to get an array with all the possible permutations of n elements of another array?
我不久前开始学习 [这实际上是我的第一个 post] 但我决定在 javascript 尝试一个小项目,我遇到了这个挑战。
我现在有一个包含 7 个元素的数组,但我计划在将来更改它的长度。我需要另一个数组,其中包含第一个数组的 N 个元素的所有可能组合。
到目前为止,我只能找到一种方法来获得所有组合 (N = firstArray.length-1),但没有找到较低 N 的任何运气。
任何人都可以解释一下吗?谢谢!
这是获得答案的一种方法。要理解这个想法,首先假设您想要找到两个 non-like 个元素 [A,B] 的数组的所有排列。不要将此数组视为 [A,B]。将其视为 [0,1]。由于这两个元素的所有组合都可以通过以 2 为基数从 0 数到 3 来找到,因此我们有 [0,0]、[0,1]、[1,0] 和 [1,1]。因此,以二为基数从 1 数到 3 将为您提供所有可能的组合,如果您丢弃所有具有重复数字的数组,然后用 A 代替 0,用 B 代替 1,您就有了答案。
因此,为了解决您的 seven-element 问题,
声明一个变量,说“let allCombinations = []; 来存储所有可能的组合。
以七为基数,让计算机从 [0,0,0,0,0,0,0] 数到 [6,6,6,6,6,6,6] ] 以七为基数。
使用从 0 到 6 的循环检查每个新的 base-seven 数组是否有任何重复数字,以检查数组中的每个元素是否出现多次。
如果元素在当前数组中出现不止一次,则将其丢弃。如果没有,将其推送到allCombintation。
继续此过程,直到到达 [6,6,6,6,6,6,6]。然后通过数组映射并将每个数字替换为其对应的原始元素。
可以修改此过程以考虑具有重复元素的集合。但这种方法解决的基本问题是确保元素的每一种可能排列都被考虑在内,而不会遗漏任何排列。
我不久前开始学习 [这实际上是我的第一个 post] 但我决定在 javascript 尝试一个小项目,我遇到了这个挑战。
我现在有一个包含 7 个元素的数组,但我计划在将来更改它的长度。我需要另一个数组,其中包含第一个数组的 N 个元素的所有可能组合。
到目前为止,我只能找到一种方法来获得所有组合 (N = firstArray.length-1),但没有找到较低 N 的任何运气。
任何人都可以解释一下吗?谢谢!
这是获得答案的一种方法。要理解这个想法,首先假设您想要找到两个 non-like 个元素 [A,B] 的数组的所有排列。不要将此数组视为 [A,B]。将其视为 [0,1]。由于这两个元素的所有组合都可以通过以 2 为基数从 0 数到 3 来找到,因此我们有 [0,0]、[0,1]、[1,0] 和 [1,1]。因此,以二为基数从 1 数到 3 将为您提供所有可能的组合,如果您丢弃所有具有重复数字的数组,然后用 A 代替 0,用 B 代替 1,您就有了答案。
因此,为了解决您的 seven-element 问题,
声明一个变量,说“let allCombinations = []; 来存储所有可能的组合。
以七为基数,让计算机从 [0,0,0,0,0,0,0] 数到 [6,6,6,6,6,6,6] ] 以七为基数。
使用从 0 到 6 的循环检查每个新的 base-seven 数组是否有任何重复数字,以检查数组中的每个元素是否出现多次。
如果元素在当前数组中出现不止一次,则将其丢弃。如果没有,将其推送到allCombintation。
继续此过程,直到到达 [6,6,6,6,6,6,6]。然后通过数组映射并将每个数字替换为其对应的原始元素。
可以修改此过程以考虑具有重复元素的集合。但这种方法解决的基本问题是确保元素的每一种可能排列都被考虑在内,而不会遗漏任何排列。