Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: usuwanie całego rekordu z tablicy asocjacyjnej
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
acainoks
Witam załóżmy że mam tablicę asocjacyjną postaci:
[JAVASCRIPT] pobierz, plaintext
  1. var tablica = { "Ala" : "kot", "Pi" : 3.1415 };
[JAVASCRIPT] pobierz, plaintext

Czy jest możliwe usunięcie całego rekordu, bez filtrowania całej tablicy, gdzie Ali jest przypisany kot? Nie chodzi mi tu o użycie funkcji delete czy splice.
Dziękuję i pozdrawiam.
seth-kk
w ramach scislosci - to jest obiekt a nie tablica
wracajac do tematu chodzi o cos takiego:
Kod
var tablica = { "Ala" : "kot", "Pi" : 3.1415 };
//...
tablica = {};
acainoks
przepraszam za pomyłkę wstydnis.gif
Może inaczej
Tworzę Array
[JAVASCRIPT] pobierz, plaintext
  1. var ubrania = new Array();
[JAVASCRIPT] pobierz, plaintext


później tworzę wzór obiektu

[JAVASCRIPT] pobierz, plaintext
  1. function ubranie (rodzaj,rozmiar,kolor,id) {
  2. this.rodzaj = rodzaj;
  3. this.ro = rozmiar;
  4. this.k = kolor;
  5. this.id = id;
  6. }
[JAVASCRIPT] pobierz, plaintext


następnie tworzę obiekt
[JAVASCRIPT] pobierz, plaintext
  1. var spodnie = new ubranie(jeansy,xxl,black,394);
[JAVASCRIPT] pobierz, plaintext


i dodaję do tablicy
[JAVASCRIPT] pobierz, plaintext
  1. ubrania.push(spodnie);
[JAVASCRIPT] pobierz, plaintext


poprzednio chciałem skrócić ale nie wyszło wstydnis.gif
Teraz chodzi o to aby usunąć te spodnie o id 394 spośród innych ubrań:)
seth-kk
jesli nie znasz indeksu rekordu to musisz go znalesc - indexOf() lub petla
dlaczego nie splice()?
ja o ile to mozliwe wpychalbym obiekty na konkretne indeksy rowne ich id i usowal za pomoca splice()
acainoks
Seth-kk na dobrą sprawę może być splice() z tym że this.id musiałoby jakoś nadpisywać numer obiektu tworzony automatycznie w tablicy js. Dochodzi jeszcze do tego taki problem, że w późniejszym czasie chciałbym aby moje id wyglądało np: U7vv9BHy4S44g a żeby takie coś przypisać do numeru obiektu w tablicy to już JS sobie chyba nie pozwoli. Ktoś ma może jakiś pomysł
seth-kk
1. podwojne id (int dla tablicy i string dla obiektu)
2. indexOf() - w tym przypadku nie pamietam czy implementacja js we wszystkich przegladarkach pozwala na jego uzycie
3. obiekt zamiast tablicy
wybierz sobie jedno
zegarek84
Cytat(seth-kk @ 10.11.2009, 00:59:32 ) *
w ramach scislosci - to jest obiekt a nie tablica

i one są właśnie w JS odpowiednikiem tablic asocjacyjnych i można się spokojnie do nich potem odwoływać jak do tablic
Cytat(acainoks @ 10.11.2009, 12:15:52 ) *
Seth-kk na dobrą sprawę może być splice() z tym że this.id musiałoby jakoś nadpisywać numer obiektu tworzony automatycznie w tablicy js. Dochodzi jeszcze do tego taki problem, że w późniejszym czasie chciałbym aby moje id wyglądało np: U7vv9BHy4S44g a żeby takie coś przypisać do numeru obiektu w tablicy to już JS sobie chyba nie pozwoli. Ktoś ma może jakiś pomysł

pytanie czy to id masz unikatowe?? i czy ono zazwyczaj będzie właśnie tym identyfikatorem?? - bo inaczej tablicę całą będziesz musiał przeszukać...

jeśli to id masz unikatowe to użyj "tablicy asocjacyjnej" () w konstrukcji danych:
[JAVASCRIPT] pobierz, plaintext
  1. ubrania={
  2. id:{
  3. rodzaj:null,
  4. ro:null,
  5. k:null
  6. }
  7. }
[JAVASCRIPT] pobierz, plaintext

gdzie ubrania={} a dany produkt {rodzaj:null,ro:null,k:null}, gdzie do ubrań dodajesz ubrania[id]={rodzaj:null,ro:null,k:null}...
rekord kasujesz np. przez delete(ubrania[id]) - oczywiście to id masz unikatowe...
acainoks
Dzięki zegarek84 właśnie o to chodziło. Id będzie niepowtarzalny.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.