22

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

第一的:

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

第二:

var element = my_array.shift();

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

4

4 回答 4

50

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

shift更具可读性(在我看来)并且速度也明显更快(至少在 Chrome 中):

在此处输入图像描述

于 2012-05-24T17:28:12.623 回答
6

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

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

于 2012-05-24T17:28:11.303 回答
2

shift返回被移除的元素,splice返回被移除元素的数组。

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

于 2012-05-24T17:28:20.877 回答
0

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 
于 2021-03-30T16:49:43.920 回答