Javascript shift()unshift()助记符?

exe*_*ook 20 javascript history terminology

我很难记住什么Array.shift()Array.unshift()做什么.

几年后,当我需要使用其中一个时,我还会不时查看参考文献.任何人都可以解释为什么选择这些名称以及如何记住哪一个做什么?

我没有这样的问题,Array.push()Array.pop()

小智 16

据我所知.

移位命令来自二进制位移[1].例如.

    001100
0 < 011000 // when you shift left
|
Yay!
Run Code Online (Sandbox Code Playgroud)

我觉得很简单,就像你从后面推它一样.所以这对我来说很有意义.

不移位是相反的转变方式.

    001100
1 > 001100 // they called it unshift
    1001100
    |
    Yay!
Run Code Online (Sandbox Code Playgroud)

就是这样,希望这会有所帮助!

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

  • @ exebook-没有简单的方法可以记住它,只记得在规范中找到它并在有疑问的情况下查找它. (3认同)

azz*_*azz 7

a.push(e) ea.

e = a.pop() 持久性有机污染物最后的元素a,来e.

a.unshift(e) 入列 e开始a.

e = a.shift() 得到第一个从元素ae.

使用pushpop堆栈.

使用unshiftpop队列.(或pushshift)

我记得的区别shift(破坏性)和unshift(建设性)只需记住,我使用进行-Shift EN -queueing,并且shift是相反unshift.

  • 是的,我知道他们做什么……但明天我就会忘记哪个人做什么。我试了很多次! (2认同)

qui*_*int 5

只需考虑一下您的键盘:

Shift 获取您按的第一个键的大写字母。

.shift() 得到第一项关闭阵列。


Mat*_*ude 4

这无疑是最令人困惑的一对函数名称。我能提供的唯一救赎就是记住以下两件事之一:

  • 移位可以被认为是“移动某些东西”,也许您可​​以想象,如果您围绕一堆“移动”一个数组,某些东西可能会从末尾(或者在本例中是开头)掉落。Unshift 让事情恢复原样。
  • 这与听起来应该是相反的。unshift听起来像是撤消某些内容,但实际上,它是将某些内容放入数组中。

祝你好运!