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

JavaScript pomoc przy odwoływaniu się do tablicy w pętli

VPS Starter Arubacloud
+1 głos
378 wizyt
pytanie zadane 16 listopada 2018 w JavaScript przez ptaku19 Użytkownik (800 p.)

Witam ,potrzebuję pomocy z tablicą.

W jaki sposób mogę zrobić, aby każdy element z tablicy oddziaływał na siebie osobno?

Jeżeli pierwszy element z tablicy coś wykonał to drugi też to zrobi, jeżeli drugi to trzeci itd.

Dodam, że to wszystko odbywa się w pętli i po indeksie chce dodac metode np '.x'

Przykładowy kod na szybko:

var cos = [];
for(var i =0; i<cos.length;i++){
if ( cos[i].x == 'jakis warunek' )
{to drugi element z tablicy wykona jakiś, jezeli drugi to trzeci itd.
}
}

 

3 odpowiedzi

+1 głos
odpowiedź 16 listopada 2018 przez Milesq Nałogowiec (32,020 p.)

Skorzystaj z array methods, np

let foo = [1,2,3,4,5,6];

let bar = foo.filter(el => el%2==0);
// bar to tablica z samymi liczbami parzystymi które były w foo
// i potem iterujesz po bar np.
bar.forEach(el => {
    // operacje
})

i taikch filtrów określasz sobie pare
a tu dokładniejsze wyjaśnienia https://www.youtube.com/watch?v=Nbw_g0FtOqE

możesz też użyć funkcji .reduce która przyjmuje jako parametr tzw, akcelerator w którym poprzez który możesz oddziaływać z innymi wartościami

0 głosów
odpowiedź 16 listopada 2018 przez niezalogowany
cos[i + 1]

Tylko uważaj, bo możesz wyjść poza tablicę
komentarz 16 listopada 2018 przez ptaku19 Użytkownik (800 p.)
edycja 16 listopada 2018 przez ptaku19
//edit

Nie dokonca zrozumialem to co chce zrobic.

Polowicznie [cos+1] zadzialalo, ale mam na celu zrobic tablicy w ktorej jest kilka elementow i jezeli pierwszy z nich przekroczy przykladowo jakis X to drugi ustanie i tu warunek sie ponawia. Jezeli drugi przekroczy jakis X to trzeci ustanie
komentarz 16 listopada 2018 przez niezalogowany
Co to znaczy "drugi ustanie"?
komentarz 16 listopada 2018 przez ptaku19 Użytkownik (800 p.)
edycja 16 listopada 2018 przez ptaku19
Faktycznie slabo sprecyzowalem. Chodzilo mi o to, ze w tablicy 'cos' znajduje sie jakis obiekt, ktory jest wyswietlany na ekranie i jego X jest zwiekszany. Jezeli osiagnie jakąś daną wartosc X(wspolrzedne) to cos sie stanie itd
0 głosów
odpowiedź 16 listopada 2018 przez Chess Szeryf (76,710 p.)
edycja 16 listopada 2018 przez Chess

To, co chcesz zrobić to są chyba elementarne podstawy.

const arr = ['aa','bb','abc'];

String.prototype.my_meth = function(arg) {
	let get_x_chars = this.substring(0,arg);
	return get_x_chars;
}

for(var i=0; i<arr.length;i++) {
	let quantity_chars = 1;
	let compare_letters = 'a'.repeat(quantity_chars);
	if(arr[i].my_meth(quantity_chars) === compare_letters) {
		console.log('I found letter "' + compare_letters + '" about length ' + quantity_chars + ' from ' + arr[i] + '.');
	} else {
		break;
	}
}

https://javascriptweblog.wordpress.com/2011/12/05/extending-javascript-natives/

Edition:

Przykład z generatorem:

function* generator_x() {
   yield [ "a" , 0 ];
   yield [ "a" , 0 ];
   yield [ "b" , 0 ];
   yield [ "c" , 0 ];
   yield [ "a" , 0 ];
   yield [ "e" , 0 ];
   yield [ "f" , 0 ];
}

var g = generator_x();

var flag = true;
var temp2;
var result = [];

while(temp2 = g.next().value) {

   if(flag == false) {
	  temp2[1]++;
   }

   if(temp2[0] == "a" || flag == true && i == 0) {
      flag = true;
   } else {
      flag = false;
   }

   result.push(temp2);

}

Jeśli zmienna flag będzie ustawiona na false przed pętlą, to wtedy dla pierwszej iteracji wliczy wartość pierwszego yield'a. Ilustruje to poniższa "tabela":

flag przed pętlą równe:

      false             true

0: (2) ["a", 1]   0: (2) ["a", 0]
1: (2) ["a", 0]   1: (2) ["a", 0]
2: (2) ["b", 0]   2: (2) ["b", 0]
3: (2) ["c", 1]   3: (2) ["c", 1]
4: (2) ["a", 1]   4: (2) ["a", 1]
5: (2) ["e", 0]   5: (2) ["e", 0]
6: (2) ["f", 1]   6: (2) ["f", 1]

Chcesz chyba taki wskaźnik stworzyć na następny element w tablicy. Jeśli tak, to poczytaj o strukturach danych, m.in. o liście (list). Podsyłam przydatne odsyłacze (ang. links):

http://januszmarecki.com/StrukturyDanych.pdf

https://www.youtube.com/watch?v=_V7a1Gwuj5k

komentarz 16 listopada 2018 przez MrxCI Dyskutant (8,260 p.)
Ale dałeś łatwy przyklad :p

 

A tak powaznie, nie lepiej zamiast pętli for użyc popularnego foreach albo nawet for of?

działanie praktycznie takie samo, ale czy nie będzie miało lepszych wynikow w wydajnosci?
komentarz 16 listopada 2018 przez Chess Szeryf (76,710 p.)
Nie testowałem wydajności, napisałem tylko przykład.
komentarz 16 listopada 2018 przez ptaku19 Użytkownik (800 p.)

Ogólnie ciężko mi wykorzystać te informacje w moim programie (grze) lub po prostu  nie rozumiem tego co chce zrobić i wcale nie muszę używać tych funkcji. Za jakiś czas zrobię nowy temat i tam wkleję cały kod programu( obrobiony, bez zbędnych linijek) i będę liczył na to, że ktoś pomoże.

Dzięki za pomoc wszystkim, w czasie próbowania waszych przykładow dużo się nauczyłem :)

Podobne pytania

0 głosów
3 odpowiedzi 207 wizyt
pytanie zadane 14 sierpnia 2019 w JavaScript przez 42savage Bywalec (2,630 p.)
0 głosów
2 odpowiedzi 4,548 wizyt
pytanie zadane 28 stycznia 2017 w JavaScript przez MTB Użytkownik (690 p.)
0 głosów
2 odpowiedzi 254 wizyt
pytanie zadane 18 września 2018 w JavaScript przez MrxCI Dyskutant (8,260 p.)

93,018 zapytań

141,982 odpowiedzi

321,283 komentarzy

62,365 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...