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

question-closed JS - kasowanie elementów z tablicy (problem)

Object Storage Arubacloud
0 głosów
212 wizyt
pytanie zadane 12 kwietnia 2018 w JavaScript przez MrxCI Dyskutant (8,260 p.)
zamknięte 12 kwietnia 2018 przez MrxCI

Posiadam tablice obiektów których jest ponad 200 (roboczo mniej), chce wykasować obiekty których właność "chance" jest większa od zmiennej chance oraz te z własnością "chance" równą zeru, napisałem taką funkcję lecz ona nie działa.

 

	
//testowe zmienne:

chance=20;

var items = [{chance:0},{chance:10},{chance:20},{chance:30},{chance:0},{chance:40},{chance:50},{chance:60}]

var templ = items.length-1; // deklaruje początkową dlugość stalą dla pętli
	


for(var i=0; i<templ;i++){
			 templ = items.length-1; // po warunku splice dlugosc ulega zmianie, wiec zmienna dla pętli też
			if(items[i].chance>chance || items[i].chance==0){items.splice(i,1);} // wykrawa element gdy spełniony jest jeden z warunkow
	
		
}



// ostatecznie powinny zostać w tablicy obiekty z szansą 10 i 20, a tak się nie dzieje

 

 

Jak z takiej tablicy skasować elementy dla tych 2 warunków (własność>zmiennej lub własność ==0)?

 

Byłbym naprawdę wdzięczny ponieważ robię projekt na jutro bardzo ważny, a tylko przy tym utknąłem :c

komentarz zamknięcia: rozwiązanie:
komentarz 12 kwietnia 2018 przez MrxCI Dyskutant (8,260 p.)

rozwiązanie:

 

var newitems = [];
for(i=0;i<items.length;i++){
	if(items[i].chance<chance && items[i].chance !=0){newitems.push(items[i]);}
	
}

 

1
komentarz 12 kwietnia 2018 przez Comandeer Guru (600,730 p.)

Aż się prosi użyć Array.prototype.filter.

var newItems = items.filter( function( item ) {
	return item.chance < chance && item.chance !== 0;
} );

 

komentarz 12 kwietnia 2018 przez BT101 Stary wyjadacz (12,540 p.)
edycja 13 kwietnia 2018 przez BT101
(() => {
  let number = 20;
   
  const originalArray = [
    {chance:0},{chance:10},{chance:20},{chance:30},
    {chance:0},{chance:40},{chance:50},{chance:60}
  ]; 
 
  let deleteChanceFromArray = function(array, number) {
    let arrayDummy = array.slice();
    for(let i=0, l = arrayDummy.length - 1; l > i; l--) {
      if(arrayDummy[l].chance > number) {
        arrayDummy.splice(l, 1);
      }
    }
    return arrayDummy;
  }
 
  const newArray = deleteChanceFromArray(originalArray,number);
  console.log(newArray);
  console.log(originalArray);
})();

demo


Edytowałem kod żeby nie zmieniał oryginalnej tablicy.

komentarz 12 kwietnia 2018 przez Comandeer Guru (600,730 p.)

@BT101, Twoje rozwiązanie modyfikuje oryginalną tablicę, co w wielu przypadkach może być problemem. Dodatkowo – czemu nie Array.prototype.filter?

komentarz 12 kwietnia 2018 przez BT101 Stary wyjadacz (12,540 p.)
Podałem tylko inny sposób. Faktycznie trzeba wziąć pod uwagę, że zmodyfikuje.

Podobne pytania

+1 głos
1 odpowiedź 158 wizyt
pytanie zadane 13 grudnia 2020 w HTML i CSS przez DominikPie Użytkownik (770 p.)
+2 głosów
2 odpowiedzi 668 wizyt
pytanie zadane 11 grudnia 2020 w HTML i CSS przez DominikPie Użytkownik (770 p.)
0 głosów
1 odpowiedź 211 wizyt
pytanie zadane 17 stycznia 2018 w Nasze projekty przez Gambr Dyskutant (7,530 p.)

92,539 zapytań

141,382 odpowiedzi

319,479 komentarzy

61,928 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!

...