Javascript utilizează cuvântul cheie rezervat drept cheie

Facand asa

var x = new Array();
x['length']=5;

va face x o serie de 5 elemente nedefinite, dar de fapt vreau să aibă valoarea '5' stocată la lungimea cheie.

Este posibil?

0
Trebuie să analizez un fișier care conține multe cuvinte și să stocheze numărul de apariții ale fiecărui cuvânt.
adăugat autor Cristy, sursa
Utilizați în schimb un obiect, astfel: var x = new Object (); x ["lungime"] = 5; x ["altă cheie"] = 10; si asa mai departe. Deci, iterați prin listă, puteți face: pentru (var a în x) {...}.
adăugat autor Shredderroy, sursa
Care este cazul dvs. de utilizare?
adăugat autor Quentin, sursa

5 răspunsuri

Puteti folosi obiecte in loc de arrays pentru a va stoca datele. Dar, dacă aveți nevoie să utilizați Arrays (este posibil să aveți nevoie să utilizați funcționalitatea acestora), ați putea să le stricați și să le memorați ca chei de matrice.

Utilizați o regulă simplă de urmat pentru a ocoli toate cuvintele cheie posibile. De exemplu, prefixați toate cheile de tablou cu un caracter "_". În acest fel, puteți întotdeauna să restaurați cuvintele originale din chei, pur și simplu eliminând primul lor caracter și sunteți sigur că nu faceți referire la o anumită proprietate a obiectelor Array (cum ar fi proprietatea lungime).

0
adăugat

Trebuie să analizez un fișier care conține multe cuvinte și să stocheze numărul de apariții ale fiecărui cuvânt

Utilizați un obiect și faceți cuvintele cheie. Nu stocați date secvențiale/ordonate, deci nu ar trebui să utilizați un matrice.

var word_count = {};
for (var i; i < words.length; i++) {
  var word = words[i];
  if (word_count[word]) {
    word_count[word]++;
  } else {
    word_count[word] = 1;
}
0
adăugat
Acolo te duci. =)
adăugat autor benqus, sursa

În matricele JavaScript nu există chei. Căutați obiecte:

var x = {}
x.length = 5;
0
adăugat
Distincția foarte importantă. Mulțumesc. Ceea ce ar fi trebuit să scriu este "nu sunt menite să fie folosite pentru perechi cheie/valoare"
adăugat autor ziad-saab, sursa
Notă laterală: deoarece un array este un obiect, el are chei , dar cheia length este deja utilizată pentru o proprietate.
adăugat autor Guffa, sursa

Dacă doriți să faceți acest lucru, ar fi mai bine să creați un obiect decât un matrice. Acest lucru ar trebui să vă dea ceea ce doriți.

var x = {};
x['length'] = 5;
0
adăugat

Puteți apela metode pe un obiect JavaScript utilizând două sintaxe diferite. Sintaxa familiară "punct" cu paranteze pentru a invoca metoda și sintaxa brațului pătratelor. Puteți să apelați o metodă pe un obiect JavaScript utilizând sintaxa myObj ["methodname"] (args) . Acest lucru este util atunci când doriți să construiți dinamic numele metodei utilizând șiruri de caractere. Amintiți-vă că obiectele din JavaScript sunt foarte asemănătoare cu o tabelă hash (dicționar) unde cheile denotă proprietățile și numele funcțiilor. Dacă valoarea unei taste deține o funcție, ea poate fi invocată (folosind paranteze).

În exemplul dvs., Array are o metodă numită "lungime". În mod neașteptat, îi chemați setter-ul (care stabilește lungimea matricei la valorile goale, adică nedefinite).

Punând totul deoparte, într-adevăr vrei un hash (matrice asociativă) în acest caz. O matrice este o structură de date indexată offset.

A simple object literal like myObj = {} will suffice to give you hash semantics (again, objects in JavaScript are already like hashes) and you can then call myObj.whatever = "some value"

0
adăugat
JavaScript, România - Moldova
JavaScript, România - Moldova
328 participanți

Comunitatea Română JavaScript: github.com/js-ro Pentru confort, opriți notificările. Parteneri: @node_ro, @php_ro, @python_ro, @seo_ro, @RomaniaGroup, @ai_ro, @Grupuri_IT Offtop: @holywars_ro Joburi: @js_jobs_ro Sponsored with ❤️ by ciupacabra.com