26

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

几年后,当我需要使用其中一个时,我仍然不时查看参考。谁能解释为什么选择这些名字以及如何记住哪个名字做什么?

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

4

5 回答 5

21

据我所知。

移位命令来自二进制位移[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

于 2013-10-01T04:16:55.777 回答
9

想想你的键盘:

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

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

于 2013-10-01T04:42:28.157 回答
8

a.push(e) e到. _ _a

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

a.unshift(e) e在. _ _a

e = a.shift() 从to获取一个元素。ae

用于push堆栈pop

用于unshift队列pop。(或pushshift

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

于 2013-10-01T04:23:18.093 回答
4

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

  • Shift 可以被认为是“移动一些东西”,也许你可以想象,如果你围绕一堆“移动”一个数组,一些东西可能会从结尾(或者在这种情况下,开始)掉下来。Unshift 让事情恢复原状。
  • 这与听起来应该是相反的。unshift听起来像是在撤消某些东西,但实际上,它是将某些东西放到数组上。

祝你好运!

于 2013-10-01T04:39:50.263 回答
4

怎么样:

SHIFTer 做一个漂移者

它返回变量的第一个条目。

和 -

UNSHIFTer 是一个偷偷排队的小东西

插入参数作为数组中的第一个条目

哦,这里有很深的心理技巧在起作用!!:-o 但说真的,你会因为它的特殊性而记住它 :-)

于 2013-10-01T04:41:04.323 回答