猿问

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

我正在生成一个数组,如:


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 parameters

myArray.unshift(X4, X5) => [X5, X4, X3, X2, X1]

更新:


现在我正在做:


myArray.unshift(X);

myArray.splice(-1, 1);// or pop()

但这不是我想要的,我只需要替换项目,因为当我调用unshift和splice


有只小跳蛙
浏览 169回答 3
3回答

梦里花落0921

您正在寻找原型中不可用的 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]

红糖糍粑

您可以使用Array.prototype.unshift和Array.prototype.pop方法来简化您的答案,如下所示:myArray.unshift() myArray.pop();该unshift方法将一个或多个元素添加到数组的开头,并返回数组的新长度。该pop方法从数组中删除最后一个元素并返回该元素(此方法更改数组的长度)。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答