Array - sortera namn och födelsedag - Jscript
/*
*
*Jag ska göra ett tvådimensionellt fält som innehåller namn och födelsedatum för vänner. Sen ska *jag skriva en metod för Array-objekten som gör en lista på vilka födelsedagar som kommer härnäst *och visar listan i en meddelanderuta.
*
*/
var i;
function sortera ( a, b )
{
return a - b;
for (i = 0; i < 4; i++)
{
arrTabell[i];
arrTabell[i] = arrTabell[i] + ' \n ';
}
}
var arrNamn = new Array('Henry','Wilmer','Andre','David');
var arrDatum = new Array('4/12','1/13','4/4','5/7');
var arrTabell = new Array(arrNamn,arrDatum);
Date.prototype.birthday = sortera;
var datNu = new Date();
WScript.Echo('Idag är det: \n' + datNu);
/*Det är nu jag fastnar...jag vill jämföra vilket datum är närmast i tiden så att den börjar med att skriva ut den först och sen nr.2 och sen nr3. närmast i tiden..
*/
Det finns många sätt att göra detta på men jag kommer presentera ett rätt så enkelt sätt.
Eftersom att du ska sortera så tänker jag att du kan göra det lätt för dig. Genom att jämföra vilken dag på året det är idag och vilken dag på året som någon fyller år. Det vill säga att du skriver inte 1/13 utan 13 eftersom Wilmer fyller år dag 13 på året. När du har gjort om allas födelsedagar till dagar istället för datum, antagligen manuellt eller med en funktion som räknar ut det, är det bara att skaffa vilken dag det är idag på året. När detta skrivs är det dag 38, 2/7.
Eftersom födelsedagar och dagens dag kommer vara i normala siffror så blir det lättare att jämföra och sortera. Klura lite på hur du ska göra för att sortera så den personen som fyller år närmast denna dag skrivs ut först! Ett tips är att hitta det minsta värdera för födelsedagarna som är större än dagens dag. I detta fall ska du hitta den personen som fyller år närmast dag 38, men dagar under 38 har redan fyllt år, så vi kan utesluta dem.
Här är en start! På följande sätt skaffar du den nuvarande dagen!
var datumNu = new Date(); //Detta kommer hämta dagens datum
var datumÅrStart = new Date(datumNu.getFullYear(), 0, 0); //Detta kommer hämta dagens första/förra årets sista dag
var diff = datumNu - datumÅrStart; //Detta kommer räkna ut skillnaden mellan idag och 2018 start i millisekunder, det vill säga hur många millisekunder det har gått i 2018
var enDag = 1000 * 60 * 60 * 24; //Detta räknar ut hur många millisekunder det går på en dag
var idag = Math.floor(diff / enDag); //Detta kommer räkna ut vilken dag det är idag genom att ta de millisekundrarna som har gått under 2018 och dividera det med hur många millisekunder som det går på en dag
Lycka till och fråga ifall det behövs!