• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Porównanie elementu tablicy do właściwości (property) obiektu.

Object Storage Arubacloud
0 głosów
188 wizyt
pytanie zadane 5 listopada 2015 w JavaScript przez ScriptyChris Mędrzec (190,190 p.)

Mam tablicę:

var arr = ["pierwszy", 234, "drugi", 2, 4, "trzeci", "czwarty"];

Chcę porównać każdy jej element z nazwą własności (property) obiektu:

var obj = {
    "pierwszy": 1,
    "drugi": 2,
    "trzeci": 3,
    "czwarty": 4
};

Jako wynik chcę otrzymać indeksy tablicy, które pokrywają się z odpowiednimi własnościami obiektu.

Próbowałem to zrobić tak, ale nie widzę żadnego wyniku:

for (index in arr)
{
	if (arr[index] == Object.keys(obj))
	{
		console.log("Elementy tablicy zgodne z właściwościami obiektu "+arr[index]);
	}				
}

Dobrze by było, gdyby ostatecznie można porównywać elementy podanej tablicy z dowolną inną własnością (property) lub wartością (value) obiektu przez swtich. Próbowałem, ale też nie działa:

for (index in arr)
{
    switch (arr[index])
    {
    	case Object.keys(obj): console.log("Elementy zgodne z własnością obiektu "+arr[index]);
    };
}

 

1 odpowiedź

+1 głos
odpowiedź 5 listopada 2015 przez writen Nałogowiec (29,060 p.)
wybrane 6 listopada 2015 przez ScriptyChris
 
Najlepsza

Object.keys zwróci tablicę, więc tak tego nie porównasz.

Chyba chodziło ci o coś takiego:

for (var index in arr) {
    for(var property in obj) {
       if(arr[index] == obj[property]) { 
           console.log("Elementy tablicy zgodne z właściwościami obiektu "+arr[index]);
       }
    }            
}

No chyba, że chcesz porównywać z nazwą właściwości obiektu:

for (var index in arr) {
    for(var property in obj) {
       if(arr[index] == property) { 
           console.log("Elementy tablicy zgodne z właściwościami obiektu "+arr[index]);
       }
    }            
}

I coś ty się tak uparł na tego switcha, przecież to sensu nie ma.

komentarz 5 listopada 2015 przez ScriptyChris Mędrzec (190,190 p.)
edycja 6 listopada 2015 przez ScriptyChris

Nie uparłem się na switcha, tylko chcę umieć pisać na if i na switch :)
Nie wiem dlaczego nie działa mi if według Twojego kodu (wypisuje mi wszystko poza tym, co jest w if):

for (var index in groups) {
	for(var property in groupProperties) {
	    console.log('PROPS '+property);
	    console.log("druga petla \n");
	    console.log("ARRAY "+groups[index]);
	    if(groups[index] === property.toUpperCase()) { 
			 console.log("trzecia petla \n");
			 console.log("Elementy zgodne z właściwościami obiektu "+groups[index]);
	    }
        }            
}

Obiekt groupProperties to:

var groupProperties = {
	"processors": ["producent: ","model-line: ","model: ","freq: ","cores: ","threads: ","quantity: ","netto_price: "],
					
	"graphics": ["producent: ","model_line: ","model: ","vram: ","directx: ","quantity: ","netto_price: "],
					
	"motherboards": ["producent: ","model_line: ","model: ","chipset: ","quantity: ","netto_price: "]
};

Tablica groups, to:

var groups = [
    PROCESSORS
    ,AMD|ATHLON|7750|2.6|6|2|7|250.00
    INTEL|i7|720QM|2.8|4|8|5|450.25
    INTEL|i5|4570|3.2|4|4|4|345.50
    ,GRAPHICS
    ,AMD|RADEON|7790|1GB|11|3|300.90
    NVIDIA|GEFORCE|8800GTS|512MB|10|1|150.99
    ,MOTHERBOARDS
    ,MSI|GAMING|GD-65|Z87|5|510.30
    ASUS|RAMPAGE|MAXIMUS-VII|Z87|6|890.99
    ASUS|UNKNOWN|P5KC|P35|1|50.00
];

groups.length= 6;

Chcę, aby następujące elementy tablicy, były porównane z 'property' obiektu: 'PROCESSORS', 'GRAPHICS', 'MOTHERBOARDS'.

@edit

Okazało się, że tablica groups zawiera elementy 'undefined' oraz w niektórych miejscach znaki '\r'. Usunąłem to za pomocą splice oraz slice i teraz Twój kod @writen działa :)

Podobne pytania

0 głosów
0 odpowiedzi 234 wizyt
0 głosów
1 odpowiedź 267 wizyt
pytanie zadane 11 września 2018 w JavaScript przez User007 Bywalec (2,400 p.)
0 głosów
2 odpowiedzi 1,285 wizyt
pytanie zadane 17 października 2018 w JavaScript przez smokolisz Mądrala (6,340 p.)

92,762 zapytań

141,686 odpowiedzi

320,497 komentarzy

62,106 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...