Javascript shift()unshift()助记符?

时间:2013-10-01 04:04:19

标签: javascript terminology history

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

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

我对Array.push()Array.pop()

没有这样的问题

5 个答案:

答案 0 :(得分:16)

据我所知。

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

答案 1 :(得分:7)

a.push(e) e推送到a结束

e = a.pop() 弹出 最后元素从ae

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

e = a.shift() ae第一个元素。

使用pushpop作为堆栈。

使用unshiftpop作为队列。 (或pushshift

我记得shift(破坏性)和unshift(建设性)之间的区别只是记住我使用 un -shift en -queueing,shiftunshift相反。

答案 2 :(得分:5)

想想你的键盘:

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

.shift() 第一个 项目。

答案 3 :(得分:4)

怎么样:

  

SHIFTer制作一个漂流者

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

和 -

  

UNSHIFTer是一个偷偷摸摸的weenier

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

哦,这里有深刻的心理技巧!! :-o但严重的是,你会记住它的特点: - )

答案 4 :(得分:2)

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

  • Shift可以被认为是“移动一些东西”,也许你可以想象如果你将一个阵列“转移”到一堆,有些东西可能会掉线(或者在这种情况下,开头)。 Unshift让事情恢复原状。
  • 这与听起来应该如此相反。 unshift听起来像撤消某些东西,但事实上,它正在将某些东西放到阵列上。
祝你好运!