Javascript“转移”与“拼接” - 这些陈述是否相等?

时间:2012-05-24 17:24:18

标签: javascript arrays array-splice

我只是想确认以下两个Javascript语句是否产生相同的结果,就像在我看来一样:

首先:

var element = my_array.splice(0,1)[0];

第二

var element = my_array.shift();

我希望在我自己的代码中用第二个替换第一个,以提高可读性。我可以这样做吗?

4 个答案:

答案 0 :(得分:36)

他们会有同样的效果,是的。 splice(0, 1)将从my_array中删除第一个元素,并返回包含该元素的新数组。 shift也会这样做,但返回元素本身,而不是数组。

shift更具可读性(在我看来),也是significantly faster(至少在Chrome中):

enter image description here

答案 1 :(得分:5)

两行代码都从数组中删除第一个元素,并返回已删除的元素,所有主流浏览器都支持它们。

您应该使用第二个,并且代码确实更具可读性。

答案 2 :(得分:2)

shift返回已删除的元素,splice返回已删除的元素数组。

话虽如此,这两个陈述做同样的事情,我同意第二个更具可读性。

答案 3 :(得分:1)

splice 将作为数组返回,但不会从对象中删除数据而是复制


shift 只从前面给出一个数据并从对象中删除


例如

const object = {1}
object.slice(); // return [{1}]
//object will be : {1}
object.shift(); // return {1}
//object will be : {} as shift remove the front data