鍍金池/ 問(wèn)答/PHP  HTML/ 循環(huán)規(guī)格組合可能性的思路

循環(huán)規(guī)格組合可能性的思路

clipboard.png

尺寸有1個(gè)參數(shù)
孔數(shù)和孔距 有3個(gè)參數(shù)
J值有 2個(gè)參數(shù)
ET值 有1個(gè)參數(shù)
中心孔有 2個(gè)參數(shù)

一共會(huì)有12種組合的可能 求思路 謝謝啦

回答
編輯回答
陌璃

笛卡爾積 了解一下

生成給予屬性的所有可能組合方式

2017年4月10日 17:00
編輯回答
鐧簞噯

嘗試以下代碼

function cross(inputs){
    let result = inputs[0].map(item => [item]);

    for(let cross_item of inputs.slice(1)){
        result = cross_item.reduce((acc,target)=>(result.forEach(result_item=>acc.push([...result_item,target])),acc),[]);
    }
    return result;
}

console.log(cross([['n','o','t'], ['i', 'n'], ['a'],['(',')']]));

----------------其實(shí)可以再短一點(diǎn)------------------

function cross(inputs){
    return inputs.reduce((result,cross_item)=> cross_item.reduce((acc, target) => (result.forEach(result_item => acc.push([...result_item, target])), acc), []))
}
2017年8月14日 04:03
編輯回答
獨(dú)特范

放進(jìn)二維數(shù)組里 遞歸組合

let arr=[
    [11,12],
    [21,22,23],
    [31],
    [41,42]
]
f(arr,0,[])
function f(arr,k,temp){
    if(k==arr.length){
        console.log(JSON.stringify(temp))
        return
    }
    for(let i=0;i<arr[k].length;i++){
        temp[k]=arr[k][i]
        f(arr,k+1,temp)
    }
}
2018年2月16日 17:10