Javascript tömb, szakértői kódolók
Egy tömb értékrendet, azonosítja az index.
Ön is használja a szintaxis új kivitelező. Ezen felül, akkor meg kell nyomtatni több mint 5-9 karakter ( „új” nem kötelező), van egy sokkal súlyosabb probléma a kétértelmű értelemben:
E két meghatározások nagyon hasonló, de nagyon különböző jelentése. Továbbá tegyük fel, hogy valaki meg akarja változtatni a második meghatározás, mert most azt kell meghatározni, csak az egyik eleme, a 8-as számú a tömbben b. Valószínű, hogy ő meg fog változni a következő (és ki a hibás?):
Természetesen ez nem az, amit szükséges. Az egyetlen mód arra, hogy egy tömb szám - használata szó szintaxis (szögletes zárójelek).
Vannak előnye, hogy segítségével a szintaxis new Array?
Milyen típusú adatokat tartalmazhat egy tömb?
Egy tömb tartalmazhat bármilyen tárgy vagy egy elemi típusú. Többféle adat lehet egyszerre egy tömbben.
Hogyan lehet elérni egy tömb elem?
A tömb elemei közösek objektum tulajdonságait, és elérheti őket, valamint a tulajdonságokat. Mivel az ingatlan azonosítók mindig egy karakterlánc, tömbindexként - ugyanaz a húr, nem egy szám. Azonban, ha használja az index rekord (zárójelben) is alkalmazni kell az ingatlan, akkor is lehet használni egy számérték, mivel ez átalakítható egy string tolmács. Hozzáférés tömböt ponton keresztül nem fog működni, mert identefikator tulajdonságok nem kezdődhet számmal. (Sőt, ez a viselkedés származik a szabályok az objektum tulajdonságait, ez nem csak tömbök).
Hogyan végigmegy a tömb?
Általában érdemesebb használni egy normál ciklus:
Ha a tömb elég nagy, akkor lehet, hogy aggódik többletmunkateher elérésekor array.length mindegyik ismétlésnél. Ennek elkerülése érdekében, akkor meg a hossza a tömb előre:
A kifejezés ... benne nem ajánlott végighaladni a tömb, mert akkor is megragad enumerable tulajdonságait a prototípus (lásd. Lent)
Mik a tulajdonságai egy sor egyedi?
A legfontosabb tulajdonsága a tömb - hossza (vonósok és funkciókat is van egy length tulajdonság, de a hossza a tömb
Az ECMA mondja:
Array ingatlan tartozik, hogy az objektum tömb mindig számszerűen nagyobb, mint a neve minden tulajdonsága, amely a tömb indeskom.
Más szóval, ez számítható: (a számérték utolsó index) + 1
A tömbök nem korlátozódnak a hossza a tetején. Akkor adjunk hozzá egy elemet, amelynek indexe nagyobb mint (hossz - 1) és a length tulajdonság szerint változik a fenti definíció. A tömbök maximális hossza, de ez nagyon nagy, így nem is gondolok rá.
A tömbök mindig alulról korlátos nullával. Ha megpróbálja felvenni az érték negatív index, akkor csak írj egy normális tulajdonsága a tárgy (lásd még „asszociatív tömbök” alább)
Meg lehet manipulálni a tartalmát a tömb, frissítése értéke hosszát. Ha umenshaetsya length tulajdonság a tömb, az elemek indexek nagyobb vagy egyenlő, mint az új hossza tömb eltávolítjuk (ez az egyetlen módja annak, hogy távolítsa el az index a tömb - el tudja távolítani az elemet, de csak az érték törlődik, és az index a helyén marad - azaz, a tömb „ritka” = úgy tűnik, lyukak)
Ezzel szemben, ha növeli a tömb hossza ingatlan értéke n, akkor a tömb jelenik n új elemek értéke határozatlan. Tény, hogy semmi sem változott, kivéve a hossza a tömb hossza.
Két további tulajdonságai a pszeudo-tömb: index és bemenet. Ezek a tulajdonságok jelennek meg tömbök által létrehozott reguláris kifejezések segítségével.
Milyen módszereket örökölt Array.prototype?
Oektov Array nyújt számos igen hasznos eszköz nagy részletességgel mérlegelni ECMA5. amelyek többsége lehet, hogy ismeri. A következő tömb módszerek állnak rendelkezésre a legújabb változat a böngészők.
concat felületaktív példányban tömb és hozzáteszi, hogy ez az érveket
csatlakozzon egyesíti a tömb elemeit egy egy string, elválasztva az érvelés
váltás eltávolítja, és visszaadja az első eleme
pop eltávolítja, és visszatér az utolsó elem
unshift hozzáteszi érvek a tömb első
nyomja hozzáteszi érveket, hogy a végén a tömb
fordított fordított sorrendben a tömb elemeinek másolás nélkül
szeleteljük felületaktív példányban része a tömb - az elemek index elejétől a végéig, nem beleértve a végén
splice - eltávolítja ezeket az elemeket egy tömb, helyettük argumentuma
rendezési - tömböt rendez másolás nélkül, adott esetben egy összehasonlító függvényt érvként
toString okok csatlakozzon paraméter nélkül
indexOf visszatér az index az első elem megegyezik a megadott érték, vagy -1, ha nem található
lastIndexOf visszatér az index az utolsó elem megegyezik a megadott érték, vagy -1, ha nem található
Minden igaz értékkel tér vissza, ha az átadott függvény igaz értéket ad vissza minden egyes eleme a tömb
Néhány vozvradaet igaz, ha elfogadják, hogy a függvény igaz értékkel tér vissza legalább egy elem a tömb
foreach használja az átadott függvényt minden egyes eleme a tömb
térkép létrehoz egy új tömböt, amely tartalmazza az eredmények a továbbított függvény minden egyes eleme a tömb
Keresés létrehoz egy új tömb, amely tartalmazza mindazokat az elemeket, amelyek a továbbított függvény visszatérési értéke true
csökkentésére vonatkozik funkciót egyidejűleg a két érték a tömb (balról jobbra), hogy a tömb csökkentjük egyetlen értéket (megjegyzés: csökkenti volt egy másik értéket a korábbi verziók prototype.js)
reduceRight alkalmaz funkciót egyidejűleg a két érték a tömb (jobbról balra), úgy, hogy a tömb csökkentjük egyetlen értéket
Honnan lehet tudni, hogy az objektum típusa Array?
És mi a helyzet a „asszociatív tömbök”?
Tény, hogy ezt a kódot (bár ez nem hibás) helytelen használata az objektum tömb. A tömb nem adunk hozzá bármely elem (array.length értéke 0). Minden tettünk hozzá van rendelve a tulajdonságok hétköznapi tárgy - sőt, létrehoztunk egy hash táblát.
Ennek szemléltetésére, akkor cserélje ki a Array objektum bármely más tárgyat, és ugyanazt az eredményt kapjuk.
Sőt, a teremtés hash az objektum Array potenciálisan veszélyes. Ha valaki bővül Array.prototype felsorolható tulajdonságokat (például, hogy lehet tenni a prototype.js könyvtár), akkor ezek mind szerepelnek a hurok ... a, elpusztítva a logika (vagy legalábbis meg kell használni egy hatékony módszer a hasOwnProperty) .
Készítsen hash az objektum Object és sehol máshol, hiszen Object.prototype megállapodást nem lehet meghosszabbítani.