你好
正如您在下面的要点中看到的那样,对象或数组中有03个不同的属性(我可以使用其中任何一个作为输入),并且我必须发现它们之间组合的所有可能性。
在这种情况下,我们只有03个属性,但我们可以轻松拥有20多个道具...
我如何以一种聪明的方式实现它?考虑更多的数据...
https://gist.github.com/matheus-rossi/c0261d1d8e138475c049f500fb2616fa
const configPossibilities = [ [ 1 ], [ 1, 2 ], [ 1, 2, 3, 4 ] ]
const configPossibilities2 = {
ID_LINHA: [ 1 ],
ID_IMPLEMENTO: [ 1 , 2 ],
ID_COMPOSICAO: [ 1 , 2 , 3 , 4 ]
}
const desiredResult = [
[1, 1, 1 ],
[1, 1, 2 ],
[1, 1, 3 ],
[1, 1, 4 ],
[1, 2, 1 ],
[1, 2, 2 ],
[1, 2, 3 ],
[1, 1, 4 ],
]
答案 0 :(得分:0)
function getPossibilities(obj){
return cartesian(...Object.values(obj))
}
function cartesian() {
var r = [], arg = arguments, max = arg.length-1
function helper(arr, i) {
for (var j=0, l=arg[i].length; j<l; j++) {
var a = arr.slice(0)
a.push(arg[i][j])
if (i==max) {
r.push(a)
}
else {
helper(a, i+1)
}
}
}
helper([], 0)
return r
}
const desiredResult = getPossibilities(configPossibilities2)