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

Wypisywanie w kolejnej (nowej) linii wszystkich właściwości danego podobiektu

Object Storage Arubacloud
+1 głos
446 wizyt
pytanie zadane 11 listopada 2015 w JavaScript przez ScriptyChris Mędrzec (190,190 p.)

Mam tablicę obiektów, w których są kolejne podobiekty. Po wypisaniu ich poniższym kodem:

for (index in groups)
{
	for (index2 in groups[index])
	{
		console.log(JSON.stringify(groups[index][index2],null,4));
	}
}

, otrzymałem taki output:

"processors"
[
    {
        "producent": "INTEL",
        "model-line": "i7",
        "model": "720QM",
        "freq": "2.8",
        "cores": "4",
        "threads": "8",
        "quantity": "5",
        "netto_price": "450.25\r",
        "brutto": 549.3,
        "tara": 99.05
    },
    {
        "producent": "INTEL",
        "model-line": "i5",
        "model": "4570",
        "freq": "3.2",
        "cores": "4",
        "threads": "4",
        "quantity": "4",
        "netto_price": "345.50\r",
        "brutto": 421.51,
        "tara": 76.01
    },
    {
        "producent": "AMD",
        "model-line": "ATHLON",
        "model": "7750",
        "freq": "2.6",
        "cores": "6",
        "threads": "2",
        "quantity": "7",
        "netto_price": "250.00\r",
        "brutto": 305,
        "tara": 55
    }
]
"graphics"
 [
    {
        "producent": "AMD",
        "model_line": "RADEON",
        "model": "7790",
        "vram": "1GB",
        "directx": "11",
        "quantity": "3",
        "netto_price": "300.90\r",
        "brutto": 367.1,
        "tara": 66.2
    },
    {
        "producent": "NVIDIA",
        "model_line": "GEFORCE",
        "model": "8800GTS",
        "vram": "512MB",
        "directx": "10",
        "quantity": "1",
        "netto_price": "150.99\r",
        "brutto": 184.21,
        "tara": 33.22
    }
]
"motherboards"
 [
    {
        "producent": "ASUS",
        "model_line": "RAMPAGE",
        "model": "MAXIMUS-VII",
        "chipset": "Z87",
        "quantity": "6",
        "netto_price": "890.99\r",
        "brutto": 1087.01,
        "tara": 196.02
    },
    {
        "producent": "MSI",
        "model_line": "GAMING",
        "model": "GD-65",
        "chipset": "Z87",
        "quantity": "5",
        "netto_price": "510.30\r",
        "brutto": 622.57,
        "tara": 112.27
    },
    {
        "producent": "ASUS",
        "model_line": "UNKNOWN",
        "model": "P5KC",
        "chipset": "P35",
        "quantity": "1",
        "netto_price": "50.00",
        "brutto": 61,
        "tara": 11
    }
]

 

 W jaki sposób to wypisać, aby każdy podobiekt (czyli to, co zaczyna się od wyrazu "PRODUCENT") było w nowej linii, tak samo jak w poniższej formie? http://imgur.com/1Ecgscy

 

2 odpowiedzi

+1 głos
odpowiedź 11 listopada 2015 przez Comandeer Guru (601,450 p.)
wybrane 12 listopada 2015 przez ScriptyChris
 
Najlepsza
var str = '';
for (var index in groups)
{
	var group = groups[index];

	for (var index2 in group)
	{
		var product = group[index2];

		for(var index3 in product)
		{
			str += index3 + ':' + product[index3] + '\t';
		}

		str += '\n';
	}
}

 

komentarz 12 listopada 2015 przez Comandeer Guru (601,450 p.)

Bo niepotrzebnie wstawiasz to w JSON.stringify

komentarz 12 listopada 2015 przez ScriptyChris Mędrzec (190,190 p.)

Bez JSON.stringify, otrzymuje taki output: http://imgur.com/7WY8sCw
Więc mam wtedy "Object" i również klamry. Dlaczego nie może po prostu pokazywać samych wnętrzności obiektu?

komentarz 12 listopada 2015 przez Comandeer Guru (601,450 p.)
No to pokazuje… Jeśli chcesz to mieć we własnym formacie, to trza kombinować tak, jak pokazałem.
komentarz 12 listopada 2015 przez ScriptyChris Mędrzec (190,190 p.)

W Twoim kodzie tą konwersję robi funkcja prepareString i najważniejszą linijką jest ta:
 

var properties = Object.keys(product);

Czyli wydobywanie samych wartości bez cudzysłowiów i klamer?

Czy product[property] stąd:

str += property.toUpperCase() + ': ' + product[property] + (i < properties.length - 1 ? '\t' : '');

 

komentarz 12 listopada 2015 przez Comandeer Guru (601,450 p.)

product[property]

0 głosów
odpowiedź 12 listopada 2015 przez ScriptyChris Mędrzec (190,190 p.)
edycja 12 listopada 2015 przez ScriptyChris

Po kilkunastu godzinach dotarłem do (wydaje mi się) prawidłowego sposobu wydobycia poszczególnych podobiektów w kolejnych (pojedynczych) liniach:

for (var index in groups)
{
	for (var i=0; i<groups[index].products.length; i++)
	{
		console.log('INNER: ',JSON.stringify(groups[index].products[i]));
	}
	console.log('\n');
}

Teraz mam pytanie, czy jest inna możliwość niż poprzez Regexy, na usuwanie zbędnych znaków - typu przecinki i cudzysłowia, klamry?

P.S. Te regexy to dla mnie czarna magia. Niby jest dobra strona http://regexr.com/, albo http://www.regextester.com/ - ale one nie tłumaczą krok po kroku o co chodzi, tylko można sobie wpisać i testować czy działa.

komentarz 12 listopada 2015 przez ScriptyChris Mędrzec (190,190 p.)

W wersji z podwójnym (for...in) też działa. Chociaż tu pewnie Ameryki nie odkrywam.

for (var index in groups)
{
	for (var index2 in groups[index].products)
	{
		console.log('INNER: ',JSON.stringify(groups[index].products[index2]));
	}
	console.log('\n');
}

 

Podobne pytania

0 głosów
1 odpowiedź 572 wizyt
0 głosów
3 odpowiedzi 329 wizyt
0 głosów
1 odpowiedź 249 wizyt
pytanie zadane 11 września 2018 w JavaScript przez User007 Bywalec (2,400 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...