Oppaassa kohdassa muuttujan on esitelty lyhyesti taulukoita ja objekteja, tässä osassa käsitellään taulukkoihin liittyviä
metodeita.
Esimerkissä, yksi-uloitteinen henkilo-taulukko jossa sisältönä merkkijonoja ja numeroarvo:
<p id="taulu1A"></p>
<script>
var henkilo = ["Kalle ", "Korkkinen ", 46];
document.getElementById("taulu1A").innerHTML =
henkilo + " - koko taulukon sisältö<br>" +
henkilo[1] + " - taulukon tietyn solun sisältö";
</script>
Tulos www-sivulla:
Edellinen esimerkki muokattuna objektiksi:
<p id="taulu1B"></p>
<script>
var person = {etuNimi:"Kalle", sukuNimi:"Korkkinen", ika:46};
document.getElementById("taulu1B").innerHTML = person["sukuNimi"];
</script>
Tulos www-sivulla:
Taulukon solun sisältö voi olla objekti, taulukon solun sisällöksi voidaan sijoittaa joku muu taulukko:
omaTaulukko[0] = Date.now;
omaTaulukko[1] = omaKoodi;
omaTaulukko[2] = omatAutot;
Taulukoon voidaan kohdistaa metodeita, hedelmat-taulukon solujen määrän laskeminen:
<p id="taulu1C"></p>
<script>
var hedelmat = ["Banaani", "Appelsiini", "Omena", "Sitruuna", 0];
document.getElementById("taulu1C").innerHTML = hedelmat.length;
</script>
Tulos www-sivulla,taulukon solujen lukumäärä:
HOT TIP!! Taulukon sisältöä voidaan käsitellä toistorakenteella, taulukon sisällön näyttäminen listana:
<p id="tauluD"></p>
<script>
var hedelmat, teksti, monta, laskuri;
hedelmat = ["Banaani", "Appelsiini", "Omena", "Sitruuna", 0];
monta = hedelmat.length;
teksti = "<ul>";
for (laskuri = 0; laskuri < monta; laskuri++) {
teksti += "<li>" + hedelmat[laskuri] + "</li>";
}
teksti += "</ul>";
document.getElementById("tauluD").innerHTML = teksti;
</script>
Tulos www-sivulla:
Taulukkoon voidaan lisätä tietoa, esimerkissä painikkeella:
<button onclick="lisaaHedelma()">Lisää tieto</button>
<p id="tauluE"></p>
<script>
var hedelmat = ["Banaani", "Appelsiini", "Omena", "Sitruuna"];
document.getElementById("tauluE").innerHTML = hedelmat;
function lisaaHedelma() {
hedelmat.push("Kiwi");
document.getElementById("tauluE").innerHTML = hedelmat;
}
</script>
Tulos www-sivulla:
toString() metodi
Metodilla toString()
erottelee pilkulla merkkijonoja, myös numeron:
<p id="tauluFA"></p>
<script>
var hedelmat = ["Banaani", "Appelsiini", "Omena", "Sitruuna",37];
document.getElementById("tauluFA").innerHTML = hedelmat.toString();
</script>
Tulos www-sivulla:
join() metodi
Metodilla join()
voidaan taulukosta liittää merkkijonoja halutulla merkillä eroteltuna:
<p id="tauluFB"></p>
<script>
var hedelmat = ["Banaani", "Appelsiini", "Omena", "Sitruuna",37];
document.getElementById("tauluFB").innerHTML =
hedelmat.join(" ") + "<br>" +
hedelmat.join(" & ");
</script>
Tulos www-sivulla:
pop() ja push() metodit
Näillä metodeilla voidaan taulukosta poistaa ja lisätä solu taulukkoon.
Metodilla pop()
voidaan poistaa taulukon viimeinen solu, esimerkissä myös näytetään
poistettavan solun sisältö:
<p id="tauluFC"></p>
<p id="tauluFD"></p>
<p id="tauluFE"></p>
<script>
var hedelmat = ["Banaani", "Appelsiini", "Omena", "Sitruuna",37];
document.getElementById("tauluFC").innerHTML = hedelmat;
document.getElementById("tauluFD").innerHTML = hedelmat.pop();
hedelmat.pop();
document.getElementById("tauluFE").innerHTML = hedelmat;
</script>
Tulos www-sivulla:
Metodilla push()
voidaan lisätä taulukkoon solu ja soluun sisältö:
<p id="tauluFF"></p>
<p id="tauluFF"></p>
<script>
var hedelmat = ["Banaani", "Appelsiini", "Omena", "Sitruuna",37];
document.getElementById("tauluFF").innerHTML = hedelmat;
function lisaaSolu() {
hedelmat.push("Mansikka");
document.getElementById("tauluFF").innerHTML = hedelmat;
}
</script>
Tulos www-sivulla:
Taulukon solun siirtäminen
shift() metodi
Metodilla shift()
voidaan "siirtää" taulukon solu ja solun sisältö pois taulukon alusta.
Esimerkissä siirretään taulukon poistetaan 1.solu:
<p id="tauluEA"></p>
<p id="tauluEB"></p>
<script>
var hedelmat = ["Banaani", "Appelsiini", "Omena", "Sitruuna",37];
document.getElementById("tauluEA").innerHTML = hedelmat;
hedelmat.shift();
document.getElementById("tauluEB").innerHTML = hedelmat;
</script>
Tulos www-sivulla:
Poisto ja samalla poistettavan solun sisällön näyttäminen:
<p id="poistettu"></p>
<script>
var hedelmat = ["Banaani", "Appelsiini", "Omena", "Sitruuna",37];
document.getElementById("poistettu").innerHTML = hedelmat.shift();
</script>
Tulos www-sivulla:
unshift() metodi
Metodilla unshift()
voidaan taulukon alkuun lisätä solu ja solun sisältö:
<button onclick="omaLisays()"> Lisää tieto </button>
<p id="tauluEC"></p>
<script>
var hedelmat = ["Banaani", "Appelsiini", "Omena", "Sitruuna"];
document.getElementById("tauluEC").innerHTML =
"Taulukko alussa:" + " " +
hedelmat;
function omaLisays() {
hedelmat.unshift("Puolukka");
document.getElementById("tauluEC").innerHTML =
"Lisätty tieto: " + " " + hedelmat;
}
</script>
Tulos www-sivulla:
Haluttaessa vaihtaa taulukossa olevan solun sisältö, on tieto sijoitettava taulukon soluun:
hedelmat[3] = "Mustikka";
Sisällön vaihtaminen onnistuu myös haluttuun kohtaan taulukossa:
<button onclick="omaVaihto()"> Vaihda </button>
<p id="tauluED"><</p>
<script>
var hedelmat = ["Banaani", "Appelsiini", "Omena", "Sitruuna"];
document.getElementById("tauluED").innerHTML =
"Taulukko aluksi: " + "<br>"+
hedelmat;
function omaVaihto() {
hedelmat[hedelmat.length - 2] = "Mustikka";
document.getElementById("tauluED").innerHTML =
"Omena vaihdettu Mustikkaan: " + "<br>"+
hedelmat;
}
</script>
Tulos www-sivulla:
<
Enemmän ohjelmointi vaatisi etsiä taulukosta soluista tieto haluttu tieto, laskea muuttujiin taulukon koko ja solun sijainti sekä vaihtaa kysyiseen soluun sisältö.
Taulukosta on mahdollista, mutta ei suositeltavaa tuhota (delete) solu sisältöineen, joten käytä mielummin tämän
toteutuksessa pop()- ja shift()-metodeita.
splice() metodi
Metodilla splice()
voidaan liittää solujen sisältöineen taulukkoon:
taulukon_nimi.splice(kohta taulukossa, solujenmäärä, sisältö_1, sisältö_2)
* kohta taulukossa - 0 = taulukon alkuun, jolloin alkuperäinen sisältö siirtyy seuraaviin soluihin * solujenmäärä - hiukan epäselvä miten numero-asetus vaikuttaa, huomaa miinusmerkkinenkin luku kelpaa * sisältö_1 - lisättävä tieto, yksi tai useampia
Esimerkki:
<button onclick="lisaaOma()"> Lisää taulukkoon </button>
<p id="tauluEE"></p>
<script>
var hedelmat = ["Banaani", "Appelsiini", "Omena", "Sitruuna"];
document.getElementById("tauluEE").innerHTML = hedelmat;
function lisaaOma() {
hedelmat.splice(1, 0, "Mansikka", "Kirsikka");
document.getElementById("tauluEE").innerHTML = hedelmat;
}
</script>
Tulos www-sivulla:
splice() metodi
Solun siirtäminen onnistuu splice()-metodilla, esimerkissä ensimmäinen solu siirretään "pois":
<button onclick="omaSiirto()"> Siirrä </button>
<p id="tauluEF"></p>
<script>
var hedelmat = ["Banaani", "Appelsiini", "Omena", "Sitruuna"];
document.getElementById("tauluEF").innerHTML = hedelmat;
function omaSiirto() {
hedelmat.splice(0, 1);
document.getElementById("tauluEF").innerHTML = hedelmat;
}
</script>
Tulos www-sivulla:
concat(), Kahden taulukon liittäminen yhdeksi taulukoksi
Kaksi taulukkoa liitetään yhdeksi uudeksi taulukoksi concat()
-metodilla:
<p id="liitettyA"></p>
<script>
var nimet_1 = ["Arto", "Lassi"];
var nimet_2 = ["Eemeli", "Ville", "Jyrki"];
var nimet = nimet_1.concat(nimet_2);
document.getElementById("liitettyA").innerHTML = nimet;
</script>
Tulos www-sivulla:
concat(), Kolmen taulukon liittäminen yhdeksi taulukoksi
Kaksi taulukkoa liitetään yhdeksi uudeksi taulukoksi concat()
-metodilla:
<p id="nimiLuettelo"></p>
<script>
var nimet1 = ["Arto", "Lassi"];
var nimet2 = ["Eemeli", "Ville", "Jyrki"];
var nimet3 = ["Maija", "Kaisa"];
var kaikkiNimet = nimet1.concat(nimet2, nimet3);
document.getElementById("nimiLuettelo").innerHTML = kaikkiNimet;
</script>
Tulos www-sivulla:
Myös seuraavalla tavalla concat()
-metodilla voidaan lisätä tietoa taulukkoon:
var kaikkiNimet = nimet1.concat("Ville", "Maija");
slice(), solun poistaminen
Taulukosta voidaan poistaa sen alusta solu ja solun tieto slice()
-metodilla:
<p id="autoLuettelo"></p>
<script>
var autot = ["BWM", "Opel", "Lexus", "Audi", "Maybach"];
var uusi = autot.slice(1);
document.getElementById("autoLuettelo").innerHTML =
autot + "<br><br>" + uusi;
</script>
Tulos www-sivulla:
Metodissa numero-arvolla kerrotaan poistettavien solujen määrä:
autot.slice(3)
- poistaa kolme ensimmäistä solua
autot.slice(1,3)
- poistaa 1.solun ja 3. solun jälkeen kaikki loput solut
Taulukon sisällön aakkosjärjestykseen voi järjestää sort()
-metodilla:
<button onclick="aakkosienMukaan()"> Aakkos-järjestykseen </button>
<p id="vaihtoautot"></p>
<script>
var autot = ["BWM", "Opel", "Lexus", "Audi", "Maybach"];
document.getElementById("vaihtoautot").innerHTML = autot;
function aakkosienMukaan() {
autot.sort();
document.getElementById("vaihtoautot").innerHTML = autot;
}
</script>
Tulos www-sivulla:
Taulukon sisällön järjestyksen voi kääntää reverse()
-metodilla.
Jos taulukossa on järjestys:
A B C D E
Kohdistettaessa reverse()
-metodi taulukkoon, taulukossa järjestys muuttaa seuraavaksi:
E D C B A
Edelliseen esimerkkiin lisätään autot.sort()
alapuolelle autot.reverse()
:
autot.sort();
autot.reverse();
Numeroiden järjestäminen pienimmästä suurimpaan sort()
-metodilla:
<button onclick="jarjestaNumerot()"> Järjestä </button>
<p id="jarjestetty"></p>
<script>
var pisteet = [40, 100, 1, 5, 25, 10];
document.getElementById("jarjestetty").innerHTML =
"Pisteet aluksi:<br>" +
pisteet;
function jarjestaNumerot() {
pisteet.sort(function(a, b){return a - b});
document.getElementById("jarjestetty").innerHTML =
"Pisteet lopuksi:<br>" +
pisteet;
}
</script>
Tulos www-sivulla:
Järjestäminen suurimmasta pienimpään onnistuu vaihtamalla sort()
-metodissa aaltosulkeissa olevien
a- ja b kirjainten paikat keskenään:
pisteet.sort(function(a, b){return b - a});
Numerot voi taulukossa järjestää satunnaiseen järjestykseen random()
-metodilla:
<button onclick="omaSattuma()"> Sattuma </button>
<p id="noppa"></p>
<script>
var numerot = [1, 2, 3, 4, 5, 6];
document.getElementById("noppa").innerHTML = numerot;
function omaSattuma() {
numerot.sort(function(a, b){return 0.5 - Math.random()});
document.getElementById("noppa").innerHTML = numerot;
}
</script>
Tulos www-sivulla:
Suurimman tai pienimmän numeroarvon etsiminen taulukosta, on helpointa saada selville kun järjestää taulukon
haluttuun järjestykseen ja näyttää taulosta esimerkiksi sen ensimmäissä solussa olevan arvon.
Seuraavassa suurimman arvon etsimiseen käytetään Math.max()
-metodia:
<p Suurimmat pisteet: <span id="isotPisteet"><span></p>
<script>
var pisteet = [120, 127, 3, 99,34, 11];
document.getElementById("isotPisteet").innerHTML = maxPisteet(pisteet);
function maxPisteet(taulu) {
return Math.max.apply(null, taulu);
}
</script>
Tulos www-sivulla:
Vastaavasti pienimmän arvon löytäisi Math.min()
-metodilla käyttämällä yllä olevaa esimerkkiä vaihtamalla
max-sanan min-sanaan kohdassa:
return Math.max.apply(null, taulu);
TAULUKON JÄRJESTÄMINEN OBJEKTIN MUKAAN
Esimerkissä sort()
-metodia hyödyntäen järjestetään taulukkoon tallennetut tiedot objektien mukaan:
<button onclick="autotJarjesta()"> Iän mukaan </button>
<p id="merkit"></p>
<script>
var autot = [
{merkki:"Audi", vmalli:2016},
{merkki:"Mercedez Benz", vmalli:2001},
{merkki:"BMW", vmalli:2010}]
naytaAutot();
function autotJarjesta() {
autot.sort(function(a, b){return a.vmalli - b.vmalli});
naytaAutot();
}
function naytaAutot() {
document.getElementById("merkit").innerHTML =
autot[0].merkki + " " + autot[0].vmalli + "<br>" +
autot[1].merkki + " " + autot[1].vmalli + "<br>" +
autot[2].merkki + " " + autot[2].vmalli;
}
</script>
Tulos www-sivulla:
Seuraavassa esimerkissä järjestetään autot aakkosjärjestykseen:
<button onclick="omaJarjestys()">Järjestä </button>
<p id="merkitA"></p>
<script>
var autot = [
{merkki:"Volvo", vuosim:2016},
{merkki:"Saab", vuosim:2001},
{merkki:"BMW", vuosim:2010}]
autotNayta();
function omaJarjestys() {
autot.sort(function(a, b){
var x = a.merkki.toLowerCase();
var y = b.merkki.toLowerCase();
if (x < y) {return -1;}
if (x > y) {return 1;}
return 0;
});
autotNayta();
}
function autotNayta() {
document.getElementById("merkitA").innerHTML =
autot[0].merkki + " " + autot[0].vuosim + "<br>" +
autot[1].merkki + " " + autot[1].vuosim + "<br>" +
autot[2].merkki + " " + autot[2].vuosim;
}
</script>
Tulos www-sivulla: