Այո՛
Վաղուց է, ինչ նստել եմ էշս ինչ-որ բան գրելու։ Այսպիսով, ես որոշեցի բլոգ գրել մի պարզ սցենարի մասին, որը գրել էի ավելի վաղ այս կեսօրին: Ճիշտն ասած, փորձը զվարճալի էր:
Կարծում եմ՝ գրել եմ մոտ 3 րոպեում։ (- Վրիպազերծման ժամանակը)

Որպեսզի իմանաք, ես այս հոդվածը գրեցի Sublime Text-ում… (Այո, ահա թե որքան վատ է իմ կախվածությունը ծրագրավորումից)

Առաքելություն. ելնելով ձեր գնահատականներից՝ գտեք մի շարք հարմար դասընթացներ, որոնց համար կարող եք դիմել համալսարանում: (Պատվիրել հայրիկիցս)

Նպատակակետ. KNUST կայք

Գործիքներ. JavaScript, python, իմ աչքը և իմ ուղեղը:

Առաքելության ժամանակը՝ 10 րոպե

Լավ, սա այն է, ինչ իրականում տեղի ունեցավ իմ ծերուկի հրամանից հետո:

Ես այցելեցի KNUST-ի պաշտոնական կայք՝ պարզելու նրանց կողմից առաջարկվող տարբեր դասընթացների վերջնակետերը: Եվ ինչպես միշտ, ես հիասթափված էի։
Ինչո՞ւ: Դե, դասընթացներն այնտեղ էին իրենց համապատասխան ելակետային կետերով և այլն, բայց դրանք դասավորված էին այբբենական կարգով: Եվ ի տարբերություն այլ դեպքերի, ես հատուկ դասընթաց չեմ ունեցել: (Իրականում ես անում եմ, բայց դա, անշուշտ, տեղի չի ունենում): Այսպիսով, ես չէի կարող պարզապես հետևել նորմալ ալգորիթմին՝ ոլորելով դեպի կեսարյան հատում, որպեսզի ստուգեմ անջատման կետը: (Արդեն հասկացիր, ընկեր: Ի՞նչ ես վազում: Pentium 1)

Գումարած, ես պետք է գտնեի *միջակայք*, ոչ թե մեկ դասընթաց: (Զինվորները չեն կատակում իրենց հրամանների հետ: Ինձնից ընդամենը 4 տարի պահանջվեց դա հասկանալու համար: Եվ եթե դեռ մտածում եք, այո: հայրիկը զինվոր է !!!!)

Եթե ​​ես որոշեի կատարել պատվերը ձեռքով, ես պետք է անցնեմ յուրաքանչյուր դասընթացի միջով և գտնեմ դրա համապատասխան վերջնակետը: Եվ հետո, եթե սահմանային կետը հավասար է կամ բարձր է իմ գնահատականներից, ապա այն բավարարում է հայրիկիս խնդրանքը/միջակայքը:

Ցավոք, նրանք առաջարկում են 72 դասընթաց, և ես ոչ մի կերպ չէի պատրաստվում դա անել ձեռքով: (ընկեր, ինչու՞ պետք է շեշտեմ իմ նեյրոնային ցանցը, երբ ես ունեմ intel core i3 և գիտեմ 2 սկրիպտային լեզու: Ո՞վ է դա անում):

Եկեք ավտոմատացնենք այս անպիտան մարդուն!!

Այո՛:
Այսպիսով, առաքելությունն իրականացնելու երկու եղանակ կար:
1. Հետևեք վերը նշված ալգորիթմին:
2. Կամ խմբավորեք դասընթացները՝ ելնելով դրանց վերջնակետից: (Այո, այնտեղ միևնույն վերջնակետով տարբեր դասընթացներ)

Ալգորիթմ 1-ի հետ աշխատելու միակ թերությունն այն է, որ ես դեռ կհայտնվեմ խառնաշփոթ տվյալների հավաքածուի հետ: Քանի որ պայմանավորվածությունը կարգին չէր:

Այսպիսով, ես ստիպված էի շարժվել երկրորդ ալգորիթմով: թույն!

Լեզվի ընտրության հարցում ես որոշեցի անցնել JavaScript-ին, քանի որ այն խնայում է ձեզ ամբողջ «գեղեցիկ ապուրը» և «խնդրանքները»:
Բացի այդ, բոլորը կոդավորում են JavaScript-ով: :)

Այսպիսով, թույլ տվեք ձեզ ներկայացնել ծրագրի կառուցման գործընթացը:

Տվյալները խմբավորվեցին աղյուսակում, և ինչպես միշտ, յուրաքանչյուր տող ներկայացնում էր նոր դասընթաց
Այսպիսով, նախ պետք է գտնեի աղյուսակը փաստաթղթից:
Այնուհետև գտնեք «tbody» տարրը և գտնեք շարքերը։

var table = document.getElementsByTagName("table")[0] ; 
var tbody = table.children[1] ;
var trows = Array.from(tbody.children) ;  
var gradesPerCourse = {}

trows.length-ը պետք է հավասար լինի 72-ի, սակայն «shege» պատճառներով նրանք (տղամարդիկ, ովքեր ստեղծել են KNUST կայքը: Նրանց անունները կարելի է գտնել այս պարբերության տակ) որոշել են ներառել աղյուսակի վերնագիրը մարմինը. (Վատ պրակտիկա՝ հաշվի առնելով այն փաստը, որ կա ‹thead›‹/thead› պիտակ:

John Serbe Marfo @ Head & Webmaster

Robert Okine @ Assist & Research

Joshua Gbeve @ Design for UI/UX

Պատրիս Ասամոա Վասկո @ Web Programming

Samuel Kwame Nkansah @ Mobile Development

Այո! , այս տղաները.. նրանք բավական հպարտ էին, որ իրենց անունները տեղադրեցին կայքի սկզբնաղբյուրում: Այսպիսով, ես համապատասխանաբար պատճենեցի :)

Եկեք մոռանանք դրանց մասին և շարունակենք իմ ծածկագիրը :)

Array.from()-ը հանգույցների ցանկը (սովորաբար կենդանի) իրական զանգվածի փոխակերպելու միջոց է:
gradesPerCourseօբյեկտն էր, որը պատրաստվում էր պահել բոլոր տեսակավորված տվյալները։

Այսպիսով, հիմա ես ունեի իմ շարքերը: Ես վերլուծեցի 3 պատահական տող և պարզեցի, որ յուրաքանչյուրը պարունակում է 3 տվյալ: այսինքն. Դասընթացի համարը, դասընթացի անվանումը, համապատասխանաբար, վերջնակետը: Այսպիսով, այժմ իմ աշխատանքը կարճվեց: Ինձ մնում էր միայն հանել և խմբավորել:

Ժամանակն է արդյունահանման!

trows.forEach( row => { gradesPerCourse[row.children[2].innerText] = [] } ) ;
trows.forEach( row => { gradesPerCourse[row.children[2].innerText].push(row.children[1].innerText) } ) ;

Ֆունկցիոնալ ծրագրավորումը վառված է!! իկր…. բայց կատարողականի առումով դա տհաճ է: Բայց ո՞ւմ է դա հետաքրքրում:

Լավ, այնպես որ վերևի հատվածի առաջին տողը փաստորեն հաստատում է դատարկ զանգված յուրաքանչյուր դասարանի համար:
Իսկ երկրորդ տողը այնուհետև կրկնում է trows զանգվածը և կուրսեր ավելացնում 1-ին տողում ստեղծված դատարկ զանգվածին՝ հիմնվելով դրանց համապատասխան անջատման կետերի վրա:

Դուք պետք է տեսնեք ստորև ներկայացված պատկերի նման մի բան.

Այո! Այսպիսով, ես կարողացա խմբավորել դասընթացները՝ ելնելով դրանց համապատասխան սահմանային կետերից: Սա շատ հեշտացրեց իմ աշխատանքը:
Ես ավելի ուշ պատրաստեցի այս հատվածը, որպեսզի նույնիսկ ավելի դյուրին դարձնեմ աշխատանքը. Դուք գործառույթին տրամադրում եք համար (գնահատական) և այն վերադարձնում է այն դասընթացները, որոնց համար դուք իրավասու եք:()

( yourGrade => {
 var gpc = Object.keys(gradesPerCourse).sort()
 gpc.forEach( grade => {
 if (grade >= yourGrade) { 
 console.log(grade, gradesPerCourse[grade]) ;
 } ;
 }) ;
 })(24)
// (18) ["BA. Akan", "BA. Integrated Rural Art and Industry ", "BA. Painting and Sculpture ", "BA. Religious Studies", "BSc. Agricultural Biotechnology ", "BSc. Agricultural Engineering ", "BSc. Agriculture ", "BSc. Aquaculture and Water Resources Management ", "BSc. Dairy and Meat Science and Technology ", "BSc. Forest Resources Technology ", "BSc. Landscape Design and Management ", "BSc. Mathematics", "BSc. Meteorology and Climate Science ", "BSc. Natural Resources Management ", "BSc. Physics ", "BSc. Post Harvest Technology ", "BSc. Sports and Exercise Science ", "BSc. Statistics "]

Վերջնական հատված.

var trows = Array.from(document.getElementsByTagName(“table”)[0].children[1].children) ;
gradesPerCourse = {} ;
trows.forEach( row => { gradesPerCourse[row.children[2].innerText] = [] } ) ;
trows.forEach( row => { gradesPerCourse[row.children[2].innerText].push(row.children[1].innerText) } ) ;
(yourGrade => {
 var gpc = Object.keys(gradesPerCourse).sort()
 gpc.forEach( grade => {
 if (grade >= yourGrade) { 
 console.log(grade, gradesPerCourse[grade]) ;
 } ;
 }) ;
 })(24)

այսքանն է: Հերթական անգամ ծրագրավորումն ինձ օգնության հասավ!!(Այո, ես վստահ էի, որ իմ ծերուկից ոչ մի ապտակ չեմ ստանալու): Այսպիսով, եթե դուք ծրագրավորում չեք, ապա այցելեք udemy: Նրանք վառված են, bruh!

Մինչև ես որոշեմ նորից նստել հետույքս 5 ժամ, ցտեսություն։

NB: Ես բաց եմ կոդերի որակի և այլնի վերաբերյալ առաջարկների համար: Ազատորեն գրեք ինձ Twitter-ում @gwuah_