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!