Javascript shift() unshift() Мнемоника?

Мне трудно запомнить, что делают Array.shift() и Array.unshift().

Спустя несколько лет я все еще слишком часто проверяю ссылки, когда мне нужно использовать один из них. Может ли кто-нибудь объяснить почему эти имена выбираются и как запомнить, что делает что?

У меня нет такой проблемы с Array.push() и Array.pop()

Ответы

Ответ 1

Это, безусловно, самая запутанная пара имен функций. Единственное спасение, которое я могу предложить, - это запомнить одну из следующих двух вещей:

  • Сдвиг можно рассматривать как "перемещение чего-то вокруг", и, возможно, вы можете представить себе, что если вы "сдвигаете" массив вокруг связки, что-то может упасть с конца (или в этом случае, на начало). Unshift возвращает вещи так, как они были.
  • Это противоположность тому, что звучит так, как должно быть. unshift звучит как отмена чего-то, но на самом деле он помещает что-то в массив.

Удачи!

Ответ 2

Как я знал.

Команда shift поступает из бинарного сдвига бит [1]. для примера.

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

Я думаю, что это довольно просто, так же, как вы отталкиваете его сзади. Поэтому это имеет смысл для меня.

Недвижение - это противоположный способ сдвига.

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

Так что, надеюсь, это поможет!

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

Ответ 3

a.push(e) нажимает e на конец a.

e = a.pop() добавляет элемент last из a, в e.

a.unshift(e) enqueues e к началу a.

e = a.shift() получает элемент first от a до e.

Используйте push и pop для стеков.

Используйте unshift и pop для очередей. (Или push и shift)

Я помню разницу между shift (destructive) и unshift (конструктивным) просто помню, что я использую un -shift для en -queueing и shift противоположно unshift.

Ответ 4

Как насчет:

SHIFTER делает дрифтер

Он возвращает первую запись переменной.

и -

UNSHIFTer - это weenier, который пробирается в линию

Вставляет аргумент в качестве первой записи в массиве

О, здесь есть глубокие психологические приемы!: -o Но серьезно, вы запомните это по своей особенности: -)

Ответ 5

Подумайте о своей клавиатуре:

Shift получает капитальную версию клавиши first, которую вы нажимаете.

.shift() получает элемент первый из массива.