【问题标题】:Javascript shift() unshift() mnemonics? [closed]Javascript shift() unshift() 助记符? [关闭]
【发布时间】:2013-10-07 02:45:43
【问题描述】:

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

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

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

【问题讨论】:

  • 很容易记住,如果您在 shift / unshift 中删除“f”:shift removes 元素和 unshift adds 它们: )
  • @VickyChijwani 我会接受它作为答案
  • @VickyChijwani 我会把你的评论标记为搞笑:D
  • 毫无疑问,@VickyChijwani 评论是如何记住他们所做的事情的最佳答案
  • 请记住“Shift”比“Unshift”短,“Shift”也会使数组更短。我认为记忆的问题不在于它是从前面添加还是从后面添加,而是从前面添加/删除

标签: javascript terminology history


【解决方案1】:

想想你的键盘吧:

Shift 获取您按下的 first 键的大写版本。

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

【讨论】:

  • 这对我来说很简单。
【解决方案2】:

怎么样:

SHIFTer 做一个漂移者

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

和-

UNSHIFTer 是一个偷偷排队的小家伙

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

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

【讨论】:

  • 在所有答案中,我最喜欢这个。 Push/Pop 很容易,我只记得“shifter 使一个漂移者”,因为它会让你有一些东西从阵列中漂移出来。
【解决方案3】:

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

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

祝你好运!

【讨论】:

    【解决方案4】:

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

    e = a.pop() 弹出aelast元素。

    a.unshift(e) enqueues ea开始

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

    pushpop 用于堆栈。

    unshiftpop 用于队列。 (或pushshift

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

    【讨论】:

    • 是的,我知道他们在做什么……但明天我会忘记哪个人做什么。我试了很多次!
    • @exebook 道歉,见编辑。
    【解决方案5】:

    据我所知。

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

        001100
    0 < 011000 // when you shift left
    |
    Yay!
    

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

    unshift 是 shift 的相反方式。

        001100
    1 > 001100 // they called it unshift
        1001100
        |
        Yay!
    

    就是这样,希望对你有帮助!

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

    【讨论】:

    • 这就是问题所在!因为我可以认为 shift: 001100 = 00110 + 0。所以问题是如何记住方向? Push/pop 很简单,push 进去,pop 出去。
    • @Chokchai——不是一个很好的类比。 Shift 删除数组的第一个成员并返回它,unshift 将提供的参数按照它们出现的顺序添加到数组的开头并返回数组的新长度。
    • @exebook - 没有简单的方法来记住它,只要记住在规范中的哪里可以找到它,如果有疑问,请查找它。
    • 这是一个很好的解释。我个人更喜欢入队和出队。
    • @RobG 这不是类比,而是名称的实际来源(OP 询问 谁能解释为什么选择这些名称
    猜你喜欢
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多