Najboljši način shranjevanja polja ključ=>vrednost v javascriptu?

Kakšen je najboljši način za shranjevanje polja key=>value v javascriptu in kako ga je mogoče uporabiti v zanki?

Ključ vsakega elementa mora biti oznaka, kot je {id} ali samo id, vrednost pa mora biti številčna vrednost id.

To mora biti element obstoječega razreda javascript ali globalna spremenljivka, na katero se je mogoče preprosto sklicevati prek razreda.

Uporabi se lahko jQuery.

Rešitev

Prav to je objekt JavaScript:

var myArray = {id1: 100, id2: 200, "tag with spaces": 300};
myArray.id3 = 400;
myArray["id4"] = 500;

Po njem lahko krožite z uporabo for..in loop:

for (var key in myArray) {
  console.log("key " + key + " has value " + myArray[key]);
}

Oglejte si tudi: Delo z objekti (MDN).

V sistemu ECMAScript6 je na voljo tudi Map (glej tabelo združljivosti z brskalniki):

  • Objekt ima prototip, zato so v mapi privzeti ključi. To je bilo mogoče zaobiti z uporabo map = Object.create(null) od ES5, vendar se je to redko izvajalo.
  • Ključi objekta so nizi in simboli, pri čemer so lahko poljubne vrednosti za zemljevid.
  • Velikost Zemljevida lahko preprosto dobite, medtem ko morate za Objekt ročno spremljati velikost.
Komentarji (4)

Če sem vas prav razumel:

var hash = {};
hash['bob'] = 123;
hash['joe'] = 456;

var sum = 0;
for (var name in hash) {
    sum += hash[name];
}
alert(sum); // 579
Komentarji (0)

V javascriptu je polje ključev in vrednosti shranjeno kot objekt. V javascriptu obstajajo stvari, kot so polja, vendar se še vedno štejejo za objekte, preverite odgovor tega fanta - https://stackoverflow.com/questions/874205/what-is-the-difference-between-an-array-and-an-object#answer-874237

Polja običajno vidimo s sintakso oglatih oklepajev, predmete ("key=>value" polja) pa s sintakso oglatih oklepajev, čeprav lahko do lastnosti predmetov dostopate in jih določate s sintakso oglatih oklepajev, kot je pokazal Aleksej Romanov.

Polja v javascriptu se običajno uporabljajo samo za številčne ključe, ki se samodejno povečujejo, vendar lahko objekti v javascriptu vsebujejo tudi poimenovane pare ključ-vrednost, funkcije in celo druge objekte.

Enostavno polje, npr.

$(document).ready(function(){

    var countries = ['Canada','Us','France','Italy'];
    console.log('I am from '+countries[0]);
    $.each(countries, function(key, value) {
        console.log(key, value);
    });

});

Izhod -

0 "Kanada"

1 "Us"

2 "Francija"

3 "Italija"

Zgoraj vidimo, da lahko s funkcijo jQuery.each naredimo zanko v številčnem polju in dostopamo do informacij zunaj zanke s kvadratnimi oklepaji s številčnimi ključi.

Enostavni objekt (json)

$(document).ready(function(){

    var person = {
        name: "James",
        occupation: "programmer",
        height: {
            feet: 6,
            inches: 1
        },
    }

    console.log("My name is "+person.name+" and I am a "+person.height.feet+" ft "+person.height.inches+" "+person.occupation);

    $.each(person, function(key, value) {
        console.log(key, value);
    });

});

Izhod -

Ime mi je James in sem programer, visok 1,5 metra.

ime James

poklic programer

višina Objekt {feet: 6, inches: 1}

V jeziku, kot je php, bi to veljalo za večdimenzionalno polje s pari ključ-vrednost ali polje v polju. Ker ste vprašali, kako narediti zanko skozi polje ključ-vrednost, predvidevam, da želite vedeti, kako dobiti objekt (polje ključ=>vrednost), kot je zgornji objekt oseba, da bi imeli, recimo, več kot eno osebo.

Zdaj, ko vemo, da se polja javascript običajno uporabljajo za numerično indeksiranje, objekti pa bolj fleksibilno za asociativno indeksiranje, jih bomo uporabili skupaj, da ustvarimo polje objektov, skozi katerega lahko naredimo zanko, kot na primer -

Polje JSON (polje predmetov) -

$(document).ready(function(){

    var people = [
        {
            name: "James",
            occupation: "programmer",
            height: {
                feet: 6,
                inches: 1
            }
        }, {
            name: "Peter",
            occupation: "designer",
            height: {
                feet: 4,
                inches: 10
            }
        }, {
            name: "Joshua",
            occupation: "CEO",
            height: {
                feet: 5,
                inches: 11
            }
        }
    ];

    console.log("My name is "+people[2].name+" and I am a "+people[2].height.feet+" ft "+people[2].height.inches+" "+people[2].occupation+"\n");

    $.each(people, function(key, person) {
        console.log("My name is "+person.name+" and I am a "+person.height.feet+" ft "+person.height.inches+" "+person.occupation+"\n");
    });

});

Izhodni podatek -

Ime mi je Joshua in sem 5 ft 11 CEO

Ime mi je James in sem 6 ft 1 programer

Ime mi je Peter in sem oblikovalec, visok 1,5 metra.

Ime mi je Joshua in sem direktor, visok 1,5 metra in 11 centimetrov

Upoštevajte, da moram zunaj zanke uporabiti sintakso oglatega oklepaja s številčnim ključem, ker gre zdaj za številčno indeksirano polje predmetov, znotraj zanke pa je številčni ključ seveda impliciran.

Komentarji (0)