Javascript shift()unshift()助记符?

Javascript shift()unshift()助记符?,javascript,terminology,history,Javascript,Terminology,History,我很难记住Array.shift()和Array.unshift()所做的事情 几年后,当我需要使用其中一个时,我仍然不时地检查参考资料。有人能解释为什么选择这些名字,以及如何记住哪个是做什么的吗 我对我所知道的Array.push()和Array.pop()没有这样的问题 移位命令来自二进制位移位[1]。比如说 001100 0 < 011000 // when you shift left | Yay! 就这样,希望这有帮助 [1] a.push(e)将e推到a的端 e=a.

我很难记住
Array.shift()
Array.unshift()
所做的事情

几年后,当我需要使用其中一个时,我仍然不时地检查参考资料。有人能解释为什么选择这些名字,以及如何记住哪个是做什么的吗

我对我所知道的
Array.push()
Array.pop()
没有这样的问题

移位命令来自二进制位移位[1]。比如说

    001100
0 < 011000 // when you shift left
|
Yay!
就这样,希望这有帮助

[1]
a.push(e)
e
推到
a

e=a.pop()
最后一个元素从
a
弹出到
e

a.unshift(e)
e
排队到
a
开始

e=a.shift()
a
e
获取第一个元素

对堆栈使用
push
pop

对队列使用
unshift
pop
。(或
推送
移位


我记住了
shift
(破坏性)和
unshift
(建设性)之间的区别,只是记住了我使用un-shift进行en排队,而
shift
unshift

相反,这肯定是最容易混淆的一对函数名。我能提供的唯一救赎就是记住以下两件事之一:

  • 移位可以被认为是“移动某物”,也许你可以想象,如果你将一个数组“移位”到一束上,某物很容易从末端(或者在本例中,从开头)脱落。取消移动会使事情恢复原状
  • 这与它听起来应该是的完全相反
    unshift
    听起来像是在撤消某些内容,但实际上,它是在将某些内容放到数组中
祝你好运

那么:

搬家使人漂泊

它返回变量的第一个条目

及-

UNSHIFTer是一个偷偷排队的weenier

将参数作为数组中的第一个项插入


哦,这里有很深的心理技巧在起作用!!:-o但说真的,你会记住它的独特之处:-)

想想你的键盘:

Shift获取您按下的第一个键的大写版本


.shift()
从数组中获取第一个项。

这就是问题所在!因为我可以认为移位:001100<1=0011001,取消移位:001100->=00110+0。所以问题是如何记住方向?推/弹出很容易,推进去,弹出出去不是一个很好的类比。Shift删除数组的第一个成员并返回它,unshift将提供的参数按其出现的顺序添加到数组的开头,并返回数组的新长度。@exebook没有简单的方法记住它,只要记住在规范中的何处找到它,并在有疑问时查找它。这是一个很好的解释。就我个人而言,我更喜欢排队和退队。@RobG这不是一个类比,这是名字的真正来源(OP问有人能解释为什么选择这些名字)是的,我知道他们做什么。。。但明天我会忘记谁做了什么。我试了很多次@exebook道歉,请参见编辑。在所有答案中,我最喜欢这个。推/弹出很容易,我只记得“shifter make a flotter”,因为它会让你的数组中有一些东西漂移。这对我来说很简单。如果你在精神上放下“f”,很容易记住在shift/unshift中:
shift
删除元素并
unshift
添加它们:)@VickyChijwani我接受它作为answer@VickyChijwani我会把你的评论标记为可笑:毫无疑问,@wickychijwani comment是如何记住他们做了什么的问题的最佳答案——记住“转变”比“Unshift”、“Shift”也会使数组变短。我认为记忆的问题不在于它是从前面添加还是从后面添加,而是从前面添加/删除
    001100
1 > 001100 // they called it unshift
    1001100
    |
    Yay!