Problem z pobieraniem wartości z tabeli przy pomocy shift/pop

Problem z pobieraniem wartości z tabeli przy pomocy shift/pop
TE
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:2
0

Witam, mam problem z pobraniem wartości z tabeli. Ogólnie mam jedną tabele do której tworze nowych klientów. Następnie chce przełożyć pierwszego w tej tabeli do drugiej dlatego wykorzystuje shift. Niestety mam komunikat "undefined" w konsoli, jednakże gdy wykonam w konsoli funkcje "xxx" wtedy zwraca wynik. Nie wiem czemu w konsoli działa a w kodzie nie. Drugi problem jest taki że jak wyświetlę dwa razy tabele to mi do niej dodaje rekordy nie wiem czemu. A gdy wykonam tab.shift() to nie usuwa elementu tylko dodaje... Nie wiem gdzie tu jest błąd czy to zmienne czy coś proszę o pomoc i wyrozumiałość bo jestem początkujący. Poniżej screen z działania ten drugi tab to ta sama tabela a dodało do niej klienta

Kopiuj

``` var tab = [];
                      let tabb = [];
var tabelka = [];

function robienieklienta(){
                        let sr = 500;
                        let p = poissonProcess.create(sr, function bla() {
                           let c = new Client(tablica(), marka(), czasNaSklep());
                           tab.push(c);
                           //    console.log(c)
                           
                        })
                        p.start()
                       
                       sleep(2000).then(function () {
                          p.stop()
                        });
                        return tab;
  
}

                        console.log(tab);
                                         

var tabelka = [];
function xxx() {
 console.log(tab);
  let a = tab.shift();
   tabelka.push(a);
   return tabelka;
   }
//tab.pop();
console.log(tabelka);
console.log(xxx());
 //tabparking = tab.shift();
//console.log(tabparking);
robienieklienta();
xxx();
![screenshot-20190527212537.png](https://4programmers.net/uploads/attachment/5c/5cec39b1d76b9.png)
edytowany 2x, ostatnio: Tetr
Haskell
  • Rejestracja:prawie 10 lat
  • Ostatnio:12 miesięcy
  • Postów:4700
0

Wykonujesz shift na pustej liście tab, dlatego zwraca udefined. Zadeklarowałeś funkcję robienieKlienta ale nie widzę wywołania.


Zaglądali do kufrów, zaglądali do waliz, nie zajrzeli do d**y - tam miałem socjalizm. Czesław Miłosz
TE
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:2
0
Haskell napisał(a):

Wykonujesz shift na pustej liście tab, dlatego zwraca udefined. Zadeklarowałeś funkcję robienieKlienta ale nie widzę wywołania.

W 38 wywołuje funkcje. Po pustej? sprawdzałem czy w niej coś w jest 28 linii i wszystko było więc nie wiem czemu po pustej jak to inaczej sprawdzić albo sprawić by nie było po pustej?

edit dodaje screen w którym widać że po wpisaniu w konsoli xxx() program działa lecz dodaje ten element dopiero od drugiego indeksu a nie od zerowego albo pierwszego bo w końcu wykonałem wcześniej w kodzie tylko raz shift więc nie wiem czemu w tabeli mam dwie wartości undefined. Jednakże najważniejsze jest wyświetlanie tych przekazanych wartości w drugiej tabeli z resztą może sobie jakoś poradzę.titlescreenshot-20190527231812.png

edytowany 3x, ostatnio: Tetr
Haskell
  • Rejestracja:prawie 10 lat
  • Ostatnio:12 miesięcy
  • Postów:4700
0

Naucz się korzystać z debuggera. Masz go wbudowanego w narzędzia developerskie.


Zaglądali do kufrów, zaglądali do waliz, nie zajrzeli do d**y - tam miałem socjalizm. Czesław Miłosz

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.