白术IT 2022-05-23 18:36 采纳率: 0%
浏览 80
已结题

JS怎么实现求某个数的和的所以组合

img


请教下,couponTypes是种类,couponsNums是数量,能用什么方法能实现:例如:金额9980,用里面的数据算出等于9980的所有组合,没有相等的就取接近9980的

  • 写回答

4条回答 默认 最新

  • web修理工 2022-05-24 09:28
    关注
    获得2.50元问题酬金
    
    
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    
    <body>
        <script>
            let arr = [9980, 998, 499, 198, 99, 50, 30, 20, 10];
            let arr1 = [1, 1, 5, 7, 13, 5, 15, 13, 11, 46];
            let result = [];
            let combination = []
    
            for (let i = 0; i < arr.length; i++) {
                for (let j = 0; j < arr1.length; j++) {
                    combination.push({
                        arr: arr[i],
                        arr1: arr1[j],
                        value: arr[i] * arr1[j] - 9980
                    })
    
                }
            }
    
            let minvalue = Math.min.apply(null, combination.map(item => Math.abs(item.value)))
            result = combination.filter(item => Math.abs(item.value) == minvalue)
    
            console.log(combination, result, '===')
    
    
    
    
    
    
    
        </script>
    </body>
    
    </html>
    
    评论

报告相同问题?

问题事件

  • 系统已结题 5月31日
  • 赞助了问题酬金10元 5月23日
  • 创建了问题 5月23日

悬赏问题

  • ¥20 指导如何跑通以下两个Github代码
  • ¥15 大家知道这个后备文件怎么删吗,为啥这些文件我只看到一份,没有后备呀
  • ¥15 C++为什么这个代码没报错运行不出来啊
  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 GPT写作提示指令词
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题