循环规格组合可能性的思路

clipboard.png

尺寸有1个参数
孔数和孔距 有3个参数
J值有 2个参数
ET值 有1个参数
中心孔有 2个参数

一共会有12种组合的可能 求思路 谢谢啦

阅读 2.4k
3 个回答

尝试以下代码

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'],['(',')']]));

----------------其实可以再短一点------------------

function cross(inputs){
    return inputs.reduce((result,cross_item)=> cross_item.reduce((acc, target) => (result.forEach(result_item => acc.push([...result_item, target])), acc), []))
}

放进二维数组里 递归组合

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)
    }
}

笛卡尔积 了解一下

生成给予属性的所有可能组合方式

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题