Итерация по нескольким Javascript для циклов - PullRequest
0 голосов
/ 27 марта 2020

У меня есть программа, которая в настоящее время собирает пользовательские входные данные из таблицы входов (до 20 входов) в объекты следующим образом:

inputs[i] = {index: i, inside: id[i], outside: od[i], quantity: qty[i], sheet: qty[i], nested: 0, centers: qty[i]};

Эти объекты затем собираются в массив, называемый "all_inputs". [] "и отсортировано от наибольшего к наименьшему по« внешнему »значению, а затем по« внутреннему »значению.

В этот момент я пытаюсь провести l oop через значения, чтобы вложить меньшие объекты внутри больших со следующим вложенным кодом l oop:

function nest() {
    var i;
    var x;

    for (i = 0; i <= 19; i++) {
        for (x = 1; x <= 19; x++) {
            if (all_inputs[x].outside < all_inputs[i].inside && all_inputs[x].sheet > 0 && all_inputs[i].centers > 0) {
                var max_diameter = [1,0.5,0.464101615137754,0.414213562373095,0.37019190815875,0.333333333333333,0.333333333333333,0.302593388348611,0.276768653914155,0.262258924190165,0.254854701717148,0.248163470571686,0.236067977499789,0.231030727971008,0.22117253908639,0.216664742924422,0.208679665570499,0.205604646759568,0.205604646759568,0.195224011018748,0.190392146849053,0.183833026581681,0.180336009254436,0.176939130595961,0.173827661421222,0.171580252187166,0.169307931134573,0.166252750038606,0.162903649276644,0.161349109064689,0.15894454156034,0.15553398542277,0.154161517947058,0.151264028246755,0.149316776635116,0.148219429761119,0.147955904479076,0.143639218073289,0.141685521745403,0.140373604202714,0.137740812925344,0.136113748715697,0.134771891080212,0.133368245886005,0.13204959425163,0.130715880038233,0.129463747326957,0.128348756542845,0.126792996262206,0.125825489530404,0.124571676602365,0.123690164592469,0.122255623687619,0.121892021856964,0.121786324527999,0.119281497082362,0.1183826376515,0.117308193128286,0.116380564996047,0.115657480132814,0.115456141678356,0.11325329198258,0.112456192917835,0.111582595825726,0.110896743722961,0.10993505729827,0.109063482023183,0.108345017704475,0.107877643364849,0.107001616605762,0.106204499837112,0.105553253159066,0.104817999688188,0.104283629835208,0.103390915666444,0.102779181946967,0.10205214698369,0.101443439719369,0.100958464654456,0.100319499416176,0.0998914754916361,0.0994943278051571,0.0988449192768667,0.0985267213904549,0.0983950636926061,0.0970996240053012,0.0964952118361805,0.0958557927718008,0.0952336345438698,0.0948220595869476,0.0946362785060467,0.0935922457546945,0.0931675346224822,0.0927813152838669,0.0922491777607209,0.0918847164826246,0.0914194599063643,0.0910797982293662,0.0906360198128194,0.0902352002884737,0.0897107705211865,0.0893107254930777,0.0887693968706772,0.088357498517843,0.0880075646078596,0.0875516110593197,0.0871683648375563,0.0867753037108808,0.0864893358953348,0.0860817696475518,0.0857426210697467,0.0854315717023156,0.0851242907932574,0.0847804410445982,0.0844632117280342,0.0840568915511023,0.0837277220489576,0.0834337942524093,0.0830403776494375,0.082745752572886,0.0824755662624009,0.0819378309365561,0.0814571052924587,0.0811575777005538,0.0808523433287059,0.080531741712448,0.0802468424019666,0.0799852182779202,0.0796576770671033,0.0793504754970849,0.0790537552524824,0.0788181266638514,0.0785220696132153,0.0782996679644618,0.0780380925643413,0.0777256870114004,0.0774309919684268,0.0771444065511846,0.076869934722458,0.0765632460677672,0.0762936234551274,0.0760663843856352,0.0757724959074619,0.0754842927382019,0.0753200993320471,0.0753200993320499,0.075011811914668,0.0748664803416274,0.0746996735751545,0.0744294137778631,0.0742897544501232,0.0742049413131001,0.0739002252537429,0.0735751977883484,0.073327659015585,0.0731330487065521,0.0728884221906317,0.0726058656851315,0.0723420137983201,0.0721282484697375,0.0718363008579772,0.0715850344824458,0.0713708195964807,0.0710751238944281,0.070868206161855,0.070699661492232,0.0704936324071078,0.0703215371768408,0.0701285113725131,0.0699527765624092,0.0697761246563173,0.0696007491301596,0.0693636354061843,0.0691977284197543,0.0689995466815819,0.0687921581470771,0.0686147037244135,0.0684125824302493,0.0682183418611075,0.0680165995353739,0.0678293612426501,0.067655200908091,0.0674812525203308,0.0672522134877145,0.0670894528377888,0.0669427168509965,0.0668396222770838,0.0667143910238724,0.066538988395609,0.0663584072440224,0.0662093739499438,0.0660399147253469,0.0659220324291838,0.0657921811390669,0.0655748300719658,0.0654143218261515,0.0652610318002328,0.0650661466254684,0.0649721587410687,0.064925535151151,0.0646693541862641,0.0644312500193759,0.0642267113971596,0.0640509655275175,0.0638869456679371,0.0636575988507141,0.0635453208010487,0.0634104485536363,0.0632431652913921,0.0631143083182198,0.0629754596934648,0.0628831450908095,0.0627454065608527,0.0626164027407284,0.062426792022277,0.0623020799036331,0.062160418982552,0.0620371626423611,0.0619155949156392,0.0618461504642853,0.0616318630173698,0.0614935278025802,0.0613508366118087,0.0612076677864401,0.0610802684093964,0.0609419642949518,0.0607902014884021,0.0606266368854483,0.0605058011360861,0.060363224907819,0.0602539218157025,0.0600958709670127,0.0599899557771389,0.0598987832431936,0.0598575299212111,0.0598351811717766,0.0596134470358396,0.0595162087964008,0.0594278991321937,0.059298463710408,0.0591815222875035,0.0591188993131657,0.0589548496537462,0.05880946616729,0.0586864121869748,0.0585501833429221,0.0584316994201905,0.0583393729327116,0.058192154451914,0.0580705533627317,0.0579274858008564,0.0577859466549108,0.0576992574479061,0.0576503238794097,0.0574688380975379,0.0572927983103147,0.0571614406819912,0.0570650865145304,0.056986939153243,0.056881345369465,0.0568021894419691,0.0567058583623869,0.0566157645029396,0.0565183789533298,0.0564927900041889,0.0563648962760805,0.0562465994290015,0.0561871709775098,0.0560786864727924,0.0559799058008884,0.0559056939488112,0.0557718505009314,0.0556732944599816,0.0555664865737514,0.0554485281724567,0.0553579365097016,0.0552280618398316,0.0551192362217037,0.054975851996413,0.054872488704692,0.0548028483506789,0.0546911173456561,0.0545978058623306,0.0545228252516973,0.0544678428980319,0.0543048879977003,0.0542466582536729,0.0541452998612689,0.0540691205150602,0.0540201758410553,0.0539101719711305,0.0538579776695309,0.0537715939286004,0.0536959839815501,0.0536300920847933,0.0536043066136913,0.0534617459710973,0.0533872801536108,0.0533062248411301,0.0532303279729007,0.0531530852289163,0.0530673476911429,0.0529221411055836,0.0528086655436024,0.0527055687374866,0.0526013776269672,0.0525401330560756,0.0524552145720217,0.0522966595804934,0.0522281870170965,0.0521244370811873,0.052052464039429,0.0519891758038799,0.051923064118827,0.0518454833891698,0.0518072957590324,0.0517196006276619,0.0516123398971956,0.0515277879838436,0.0514588783266921,0.0513974167004534,0.0513005859458098,0.0512055342703493,0.0511402302359097,0.05107914926729,0.0510157136234197,0.0509476899628801,0.0508927064418454,0.0508207714444254,0.0507474598804641,0.0506758843775952,0.0506040029642295,0.0505198056107742,0.0504466084106106,0.0503638452716956,0.0502887224889001,0.0502015859225381,0.0501242891492506,0.050022090029003,0.0499268973873369,0.0498521365545311,0.0497737716680465,0.0497336996220074,0.0497184667020163,0.049598650797752,0.0495664998963117,0.0495136470968453,0.049449626327372,0.0494186119052318,0.0494036762186931,0.0492631815178675,0.0491856494047556,0.049102602370425,0.0490383941497633,0.0489835480660659,0.04891953141426,0.0488323553426755,0.0487741502463867,0.0486983889523039,0.0486287328315668,0.0485801850170139,0.0485519205619574,0.0484400343230456,0.048377038015731,0.048313207015626,0.0482453513585891,0.0481779853215316,0.0481110714412662,0.047999391024807,0.0479210054799351,0.0478394348757641,0.0477746236570242,0.0477388829867336,0.0476699561788725,0.0476161393473465,0.0475630036477231,0.0475318486103056,0.0474675381744425,0.0474153545426487,0.0473565812807201,0.0473056241011704,0.0472398161702686,0.0471933622263398,0.0471164549002985,0.0470366773462362,0.0469536113287495,0.0468871119006979,0.0468430617896079,0.0467991765216093,0.0467273410710866,0.0466670309386923,0.0466111994432667,0.0465550954948728,0.0464988370727945,0.0464483206742787,0.0463778253922804,0.0463203740177492,0.0462558804787236,0.0462153150789915,0.0461616551641653,0.046105105690792,0.0460526308137324,0.0460128440596828,0.0459355570011142,0.0458593367629794,0.0458220287289615,0.0457830393817815,0.0457421860727426,0.0457136632600265,0.0456863483593514,0.0456166613373976,0.0455728044399847,0.0455370851336894,0.0454808517151507,0.0454388324686967,0.0453948418521117,0.0453361618163209,0.0452891738059782,0.0452447140095595,0.0452106939476976,0.0451764804335823,0.0451677650826192,0.0450111943237633,0.0449358543808201,0.0448652540512986,0.0448159239333144,0.044753193092975,0.0446975440147476,0.0446454268903146,0.0445852706000536,0.0445278117528235,0.0444579167491043,0.0444002126405095,0.0443701557737238,0.0442806330971948,0.0442344525041242,0.0441937425138803,0.0441340779181577,0.0441019757194328,0.0440479098070612,0.0440107425099399,0.0439605283868673,0.0439103527101109,0.0438702607288183,0.0438336898884363,0.0437844399804204,0.0437429638161844,0.0436965289064888,0.043645011261202,0.0436114053611966,0.0435715782909369,0.0435282437683207,0.0434916514675124,0.04347006643786,0.0433793119662248,0.043337924133595,0.043284865363979,0.043235279184541,0.0431977567217976,0.0431560562538365,0.0430768068056587,0.0430257819247236,0.0429728754822965,0.0429205066734291,0.0428776122870835,0.0428391847718692,0.0427936373402203,0.0427557875942171,0.0426994689716712,0.0426488729371005,0.0426080824489024,0.0425631113253911,0.0425306475976079,0.0424701144039744,0.0424347669240425,0.0424173864777802,0.0423714069846686,0.0423560358509917,0.0423330045279287,0.0423127148944099,0.0422974881408361,0.0422910925414242,0.0421964909441793,0.0421561912358114,0.0421212802029147,0.0420792140357717,0.0420460270977942,0.0420052471457887,0.041953897403451,0.0419312749037858,0.0418948994356206,0.0418463923584994,0.0417994420005467,0.0417671725334057,0.0417243360275968,0.0416840453509959,0.0416446914564348,0.0415820932997278,0.0415628479731035,0.0415584063898697,0.0414371435247822].map(x => x * all_inputs[i].inside);
                var index = max_diameter.findIndex(function(number) {
                return number <= all_inputs[x].outside;
                });
                var eff_index = index - 1;
                var quantity_disc = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500];
                var eff_max_diameter = max_diameter[eff_index];
                var disc_yield = quantity_disc[eff_index];
                var centers_reqd = Math.ceil(all_inputs[x].sheet / disc_yield);
                do {
                    --all_inputs[i].centers;
                    all_inputs[x].sheet -= Math.min(disc_yield, all_inputs[x].sheet);
                    all_inputs[x].nested += Math.min(disc_yield, all_inputs[x].sheet);
                }
                while (all_inputs[x].sheet > 0 && all_inputs[i].centers > 0);
            }
        }
    }

    x;

    for (i = 0; i <= 19; i++) {
        x = i + 1;
        document.getElementById('index' + x).innerHTML = all_inputs[i].index;
        document.getElementById('idcalc' + x).innerHTML = all_inputs[i].inside;
        document.getElementById('odcalc' + x).innerHTML = all_inputs[i].outside;
        document.getElementById('qtyreqd' + x).innerHTML = all_inputs[i].quantity;
        document.getElementById('qtysheet' + x).innerHTML = all_inputs[i].sheet;
        document.getElementById('qtyscrap' + x).innerHTML = all_inputs[i].nested;
        document.getElementById('qtycntrs' + x).innerHTML = all_inputs[i].centers;
    }
}

Моя цель - чтобы программа запустилась с наибольшим размером (индексная позиция 0 в массиве "all_inputs") и работала по одному по одному на каждый размер под ним (т. е. итерация по значению "x" через второй l oop). Затем увеличьте «i» на единицу и повторите итерацию второго l oop снова) и так далее. Сейчас этот код не работает. Есть мысли о том, что я делаю не так ???

...