Arrays 如何在不考虑数字位置的情况下获得每个唯一的数字组合

Arrays 如何在不考虑数字位置的情况下获得每个唯一的数字组合,arrays,numbers,digits,Arrays,Numbers,Digits,我在任何地方都找不到它,我也不确定这是否可能,但是否有一种方法可以获得每个唯一的数字组合,而不考虑数字的位置(例如123、213、231、321都是一个组合,因为它们有相同的数字,但123和124是不同的)因此,X位数的所有可能组合。。谢谢 我曾经写过一段代码: function kPn(k, values, repetition) { var retVal=[]; var n=(Array.isArray(values))?n=values.length:values; var l

我在任何地方都找不到它,我也不确定这是否可能,但是否有一种方法可以获得每个唯一的数字组合,而不考虑数字的位置(例如123、213、231、321都是一个组合,因为它们有相同的数字,但123和124是不同的)因此,X位数的所有可能组合。。谢谢

我曾经写过一段代码:

function kPn(k, values, repetition) {
  var retVal=[];
  var n=(Array.isArray(values))?n=values.length:values;
  var list=[];
  for(var i=0;i<n;i++) {
    list.push(i);
    retVal.push([i]);
  }
  for(var i=2;i<=k;i++) {
    var tempRetVal=[];
    for(var rv=0;rv<retVal.length;rv++)
      for(var l=0;l<list.length;l++) {
        if(repetition||!(retVal[rv].includes(list[l]))) {
          var retValItem=retVal[rv].slice();
          retValItem.push(list[l]);
          tempRetVal.push(retValItem);
        }
      }
    retVal=tempRetVal;
  }
  if(!Array.isArray(values)) values=list;
  var permutations=retVal;
  var retVal=[];
  for(var i=0;i<permutations.length;i++) {
    tempSet=[];
    for(var j=0;j<permutations[i].length;j++)
      tempSet.push(values[permutations[i][j]]);
    retVal.push(tempSet);
  }
  return retVal;
}
返回:

(6) [Array(3), Array(3), Array(3), Array(3), Array(3), Array(3)]
0: (3) ["a", "b", "c"]
1: (3) ["a", "c", "b"]
2: (3) ["b", "a", "c"]
3: (3) ["b", "c", "a"]
4: (3) ["c", "a", "b"]
5: (3) ["c", "b", "a"]
length: 6
__proto__: Array(0)

我想你的问题更像是数学而不是编程。我的代码对你有用吗?如果是,请选择并投票表决我的答案。谢谢
(6) [Array(3), Array(3), Array(3), Array(3), Array(3), Array(3)]
0: (3) ["a", "b", "c"]
1: (3) ["a", "c", "b"]
2: (3) ["b", "a", "c"]
3: (3) ["b", "c", "a"]
4: (3) ["c", "a", "b"]
5: (3) ["c", "b", "a"]
length: 6
__proto__: Array(0)