JS不使用shift/unshift/循环时如何正确删除数组头部元素
错误原因
Array.prototype.splice() 方法的返回值是被删除元素组成的新数组,而非删除元素后的原数组。你将splice(0,1)的返回值直接赋值给array变量,自然只会得到被删除的头部元素[17]。
符合限制的解决方案
在不能使用shift/unshift/loop的前提下,你可以使用Array.prototype.slice()方法实现头部元素删除:该方法会返回指定区间的新数组,不会修改原数组,也不会用到你禁止的语法。你只需指定起始下标为1,省略结束下标,即可截取从第二个元素到数组末尾的所有内容,刚好实现删除头部元素的效果。
修改后的完整代码如下:
var array = [100, 200, 300] var newFirstElement = 17 // 头部添加元素,原有逻辑可正常运行 var array = [newFirstElement].concat(array) console.log(array); // 头部删除元素,替换splice为slice array = array.slice(1) console.log(array);
运行输出:
[ 17, 100, 200, 300 ] [ 100, 200, 300 ]
内容的提问来源于stack exchange,提问作者Kanchon Gharami
相关产品推荐
相关产品推荐

