我很难记住Array.shift()
和Array.unshift()
的作用。
几年过去了,当我需要使用它们之一时,我仍然不得不时不时地查阅参考资料。有人能解释一下为什么选择了这些名称以及如何记忆哪个函数执行哪个操作吗?
对于Array.push()
和Array.pop()
我没有这样的问题。
我很难记住Array.shift()
和Array.unshift()
的作用。
几年过去了,当我需要使用它们之一时,我仍然不得不时不时地查阅参考资料。有人能解释一下为什么选择了这些名称以及如何记忆哪个函数执行哪个操作吗?
对于Array.push()
和Array.pop()
我没有这样的问题。
据我所知。
Shift命令来自于二进制位移[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
a.push(e)
将e
推入a
的末尾。
e = a.pop()
从a
的末尾弹出e
。
a.unshift(e)
将e
加入到a
的开头,相当于队列的入队操作。
e = a.shift()
获取a
的开头元素到e
,相当于队列的出队操作。
使用 push
和 pop
来实现堆栈。
使用 unshift
和 pop
来实现队列。(或者使用push
和shift
)
我记得 shift
(具有破坏性) 和 unshift
(具有构造性) 的差别只需要记住我使用 un-shift 来进行 en-queueing 操作,并且 shift
是与 unshift
相反的操作。
想一想你的键盘:
Shift 按键可以让你输入第一个按键的大写字母。
.shift()
可以从数组中提取第一个元素。
这绝对是最令人困惑的一对函数名称。唯一能提供的帮助是记住以下两点之一:
祝你好运!
如何呢:
SHIFTer 将漂移变成了滑行
它将第一个元素返回给变量。
而 -
UNSHIFTer 是一个悄悄插队的小人
将参数作为第一个条目插入数组中
哦,这里有一些深层心理学技巧!!但是说真的,你会因为它的独特性而记得它 :-)
shift
/unshift
中将字母 "f" 想象成不存在的,那么很容易记住它们的含义:shift
是删除元素,而unshift
是添加元素 :) - Vicky Chijwani