Javascript 函数循环将三个变量与嵌套数组中包含的三个值进行比较,以找到最佳匹配

Javascript 函数循环将三个变量与嵌套数组中包含的三个值进行比较,以找到最佳匹配,javascript,function,associative-array,Javascript,Function,Associative Array,我在这个网站上潜伏了一段时间,同时我一直在用JavaScript设计一个小程序。我遇到了一个我似乎无法解决的问题,我需要你的帮助 你可以在帖子的底部找到我的问题。用外行的话说,我需要帮助设置一个函数循环,将嵌套数组中的三个值与三个值进行比较,其中每个值都可以与数组中的所有三个值进行比较 我正在研究一种计算器,以找到最佳的方法来切割一块3D矩形材料,以获得最佳的产量,给定我需要的特定切割尺寸。我有许多不同尺寸的材料可供切割,按嵌套数组排序,如下所示: 数据[i][x],其中i=可用材质数组的编号键

我在这个网站上潜伏了一段时间,同时我一直在用JavaScript设计一个小程序。我遇到了一个我似乎无法解决的问题,我需要你的帮助

你可以在帖子的底部找到我的问题。用外行的话说,我需要帮助设置一个函数循环,将嵌套数组中的三个值与三个值进行比较,其中每个值都可以与数组中的所有三个值进行比较

我正在研究一种计算器,以找到最佳的方法来切割一块3D矩形材料,以获得最佳的产量,给定我需要的特定切割尺寸。我有许多不同尺寸的材料可供切割,按嵌套数组排序,如下所示: 数据[i][x],其中i=可用材质数组的编号键,x(每个数组)的设置如下 [材料ID#,高度,宽度,长度,体积]

我有一个切割尺寸,我需要从母材中切割出来,它包括:高度、宽度、长度

我遇到的问题是,最好的方法是对齐母材中的切割尺寸(将每个值与其他值进行比较:高度、宽度、长度),以返回可能的最高产量

我要提到的是,我确实有一些限制

首先,父材质中高度测量中排列的任何线都只能有1个切割尺寸。其他两个尺寸(长度和宽度)可以是多个尺寸(如果适合)

因此,重申限制条件:

高度必须为1个单位。

宽度可以是多个单位

长度可以是多个单位

切割件的方向无关紧要,只要这些约束保持不变

长度或宽度可以是十进制,但仅计算整个切割尺寸

下面,我放置了一些我设计的代码来实现这一点,但问题是,正如您所看到的,它几乎不够动态。它只比较高度与高度、宽度与宽度等

这方面的输入如下:

cutheight;
cutwidth;
cutlength;
data[i][x]; // each nested data array is like so: [material ID key, height of material, width of material, length of material, volume of material]



for (i = 0; i < data.length; i++) {
    if((data[i][1] > cutheight) && (data[i][2] > cutwidth) && (data[i][3] > cutlength)) {
    insertSort(results, data[i], (Math.min((data[i][4] * (Math.ceil((numCutPiecesNeeded) / ((Math.floor(data[i][2]/cutwidth)) * (Math.floor(data[i][3]/cutlength)))) ) ))) ); // the last step in this function determines pieces yielded per material
    }
}
function insertSort(array, match, materialVolumeMin){
//itterate through the results and see where the new match should be inserted
    for( j = 0; j < array.length; j++){
    // if the billetVolumeMin of match is less than the materialVolumeMin of the item at position j
        if(array[j][5] > materialVolumeMin){
        //insert the match at position j
        array.splice(j, 0, match);
        array[j].push(materialVolumeMin);
        return true;
        }
    }
    // if the materialVolumeMin of match is not less than anything in array then push it to the end. This should also cover the case where this is the first match.
    // push match
    match.push(materialVolumeMin);
    array.push(match);
    // set match index 5 to the materialVolumeMin for future comparison
    //array[array.length -1].push(materialVolumeMin);
    return true;
}
从那里,我真的不知道。我感谢所有的帮助、建议或建议。谢谢大家!

编辑:我想我的问题不清楚。上面的代码是我现在如何处理这个问题的,但决不是我想在完成的程序中实际做的

我的问题是:
我如何设置一个函数,将我的三种尺寸与嵌套数组中的每种可能的材料尺寸进行比较,并返回最佳匹配,其中数据[I][5](即数据[I][4](材料体积)乘以我需要的切割件数量,除以所述父材料的适合度)是我所有可能选择中最小的。

对不起,你的问题是什么?如果你没有特别的问题,只是想检查一下你的代码,你应该试试我的问题是如何设置一个函数来比较切割尺寸和关联数组中的每个值。现在我有一个一对一的比较,它不能与所有可能的维度进行比较。对不起,你的问题是什么?如果你没有特别的问题,只是想检查一下你的代码,你应该试试我的问题是,我如何设置一个函数,将剪切大小与关联数组中的每个值进行比较。现在我有一个一对一的比较,它不能和所有可能的维度进行比较。
Math.min((data[i][1]-cutheight), (data[i][1]-cutwidth), (data[i][1]-cutlength));