我正在生成一个数组,如: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]
红糖糍粑
TA贡献1815条经验 获得超6个赞
您可以使用Array.prototype.unshift和Array.prototype.pop方法来简化您的答案,如下所示:
myArray.unshift() myArray.pop();
该unshift
方法将一个或多个元素添加到数组的开头,并返回数组的新长度。
该pop
方法从数组中删除最后一个元素并返回该元素(此方法更改数组的长度)。
添加回答
举报
0/150
提交
取消