【发布时间】:2012-05-31 07:48:10
【问题描述】:
我只是想确认以下两个 Javascript 语句是否产生相同的结果,在我看来:
第一:
var element = my_array.splice(0,1)[0];
第二:
var element = my_array.shift();
我想在我自己的代码中将第一个替换为第二个,以提高可读性。我可以这样做吗?
【问题讨论】:
标签: javascript arrays array-splice
我只是想确认以下两个 Javascript 语句是否产生相同的结果,在我看来:
第一:
var element = my_array.splice(0,1)[0];
第二:
var element = my_array.shift();
我想在我自己的代码中将第一个替换为第二个,以提高可读性。我可以这样做吗?
【问题讨论】:
标签: javascript arrays array-splice
这两行代码从数组中删除第一个元素,并返回删除的元素,它们都在所有主流浏览器中都支持。
你应该使用第二个,代码确实更具可读性。
【讨论】:
它们会产生相同的效果,是的。 splice(0, 1) 将从my_array 中删除第一个元素并返回一个包含该元素的新数组。 shift 也会这样做,但返回元素本身,而不是数组。
shift 更具可读性(在我看来)并且也是 significantly faster(至少在 Chrome 中):
【讨论】:
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
【讨论】: