为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript:在不修改数组大小的情况下取消移位

Javascript:在不修改数组大小的情况下取消移位

有只小跳蛙 2021-08-20 17:07:49
我正在生成一个数组,如:const myArray = Array.from({length: 5}, (e, i) => emptyX)myArray以 的 5 个元素开头emptyX。有没有一种简单的方法/方法可以在不改变数组大小的情况下取消数组的移动?每当我调用它时,我必须找到初始大小。例子:myArray.unshift(X1) => [X1, emptyX, emptyX, emptyX, emptyX]myArray.unshift(X2) => [X2, X1, emptyX, emptyX, emptyX]myArray.unshift(X3) => [X3, X2, X1, emptyX, emptyX]// OR with multiple parametersmyArray.unshift(X4, X5) => [X5, X4, X3, X2, X1]更新:现在我正在做:myArray.unshift(X);myArray.splice(-1, 1);// or pop()但这不是我想要的,我只需要替换项目,因为当我调用unshift和splice
查看完整描述

3 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

您正在寻找原型中不可用的 ShiftRight 方法。这是一个pollyfill:


Array.prototype.shiftRight = function(...params) {

   

    params.forEach(item => {

        for (var i = this.length - 1; i >= 0; i--) {

            if (i === 0)

               this[0] = item

            else

               this[i] = this[i - 1];

        }

    })

}



x = [1, 2, 3];


x.shiftRight(4, 5);


console.log(x);   // [5, 4, 1]


查看完整回答
反对 回复 2021-08-20
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

您可以使用Array.prototype.unshiftArray.prototype.pop方法来简化您的答案,如下所示:

myArray.unshift()
myArray.pop();

unshift方法将一个或多个元素添加到数组的开头,并返回数组的新长度。

pop方法从数组中删除最后一个元素并返回该元素(此方法更改数组的长度)。


查看完整回答
反对 回复 2021-08-20
  • 3 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信