2013-10-01 10 views
15

Mam trudności z przypomnieniem sobie, co robią Array.shift() i Array.unshift().Javascript shift() mnshicsics() unshift()?

Po kilku latach nadal sprawdzam od czasu do czasu, kiedy potrzebuję skorzystać z jednego z nich. Czy ktoś może wyjaśnić, dlaczego te nazwy są wybrane i jak zapamiętać, co się robi?

nie mam takiego problemu z Array.push() i Array.pop()

+10

łatwy do zapamiętania, jeśli mentalnie upuść „F” w przesunięciu/unshift: 'shift' _removes_ elementy i' unshift' _adds_ nich :) –

+0

@VickyChijwani ja przyjmuję je jako odpowiedź – exebook

+0

@VickyChijwani bym flag komentarz jako zabawne: D –

Odpowiedz

1

Jest to z pewnością najbardziej zagmatwana para nazw funkcji.Jedynym ratunkiem mogę zaoferować jest, aby pamiętać jedną z następujących dwóch rzeczy:

  • Przesunięcie może być traktowane jako „ruchome coś około”, a być może można obraz, że jeśli „shift” tablicą wokół pęczek , coś może spaść z końca (lub w tym przypadku na początek). Unshift przywraca wszystko tak, jak było.
  • To przeciwieństwo tego, co brzmi, jak powinno być. unshift brzmi jak coś cofającego, ale w rzeczywistości wprowadza coś do tablicy.

Powodzenia!

14

Jak już znane.

Polecenie zmiany pochodzi z binarnej zmiany bitu [1]. na przykład.

001100 
0 < 011000 // when you shift left 
| 
Yay! 

Myślę, że to całkiem proste, tak jak ty naciskasz to od tyłu. To ma dla mnie sens.

Zmiana biegu na inny jest przeciwieństwem zmiany.

001100 
1 > 001100 // they called it unshift 
    1001100 
    | 
    Yay! 

To wszystko, mam nadzieję, że to pomaga!

[1] http://en.wikipedia.org/wiki/Bitwise_operation#Bit_shifts

+0

Więc to jest problem! Ponieważ mogę myśleć jako przesunięcie: 001100 <1 = 0011001, i unshift: 001100 -> = 00110 + 0. Więc pytanie, jak zapamiętać kierunek? Push/pop są łatwe, push idzie, wyskakuje. – exebook

+0

@ Chokchai - Nie jest to dobra analogia. Shift usuwa pierwszy element tablicy i zwraca go, unshift dodaje dostarczone argumenty do początku tablicy w kolejności, w jakiej są prezentowane i zwraca nową długość tablicy. – RobG

+3

@ exebook - nie ma prostego sposobu na zapamiętanie go, pamiętaj tylko, gdzie go znaleźć w specyfikacji i sprawdź, czy masz wątpliwości. – RobG

5

a.push(e)popychae na końcu z a.

e = a.pop()pops element ostatni z a, aby e.

a.unshift(e)kolejkujee rozpoczęciem z a.

e = a.shift()dostaje się pierwszy elementu z a do e.

Użyj push i pop dla stosów.

Użyj unshift i pop dla kolejek. (Lub push i shift)

pamiętam różnicę między shift (destrukcyjne) i unshift (domniemanego) po prostu pamiętać, że używam un -Shift dla PL -queueing i shift jest przeciwieństwem do unshift.

+1

Tak, wiem, co robią ... Ale jutro zapomnę, który z nich robi co. Próbowałem wiele razy! – exebook

+0

Usługa tłumaczeniowa Przepraszamy, zobacz edytuj. – azz

4

Jak o:

Shifter sprawia drifter

Zwraca pierwszy wpis do zmiennej.

i -

UNSHIFTer jest weenier który zakrada zgodne

Wstawki argumentu jako pierwszego wpisu w tablicy

Oh, istnieją głębokie techniki psychologiczne w pracy tutaj !! : -o Ale poważnie, będziesz pamiętać go za jego osobliwość :-)

+1

Ze wszystkich odpowiedzi podoba mi się to najlepiej.Push/Pop są łatwe i pamiętam, że "shifter robi driftera", ponieważ pozostawia ci coś, co wypływa z tablicy. – Nucleon

3

Wystarczy pomyśleć o klawiaturze:

Przesunięciedostaje wersję kapitale pierwszej klucza ty naciśnij.

.shift()dostaje z pierwszy pozycję off tablicy.

+0

Jest to dla mnie wystarczająco proste. – Sethen

Powiązane problemy