gpt4 book ai didi

javascript - 无需 unshift 方法即可将项目添加到数组开头的函数

转载 作者:行者123 更新时间:2023-11-30 00:20:04 26 4
gpt4 key购买 nike

我正在尝试实现一个函数来将一个项目添加到数组的开头,而不使用 unshift 或 splice 方法,只是 array.length。到目前为止,我所做的一切都只是覆盖索引 0 处已经存在的内容。任何帮助将不胜感激!

LetsUnshift = function(array) { 
for (var i = array.length - 1; i >0; i--) {
array[i +1] = array[i];
}
array[0] = item;
};

最佳答案

保持相同的引用,您可以使用ES 6 Array.prototype.copyWithin

var arr = ['b', 'c', 'd'],
x = 'a';
++arr.length;
arr.copyWithin(1, 0);
arr[0] = x;

arr; // ["a", "b", "c", "d"]

你可以反转两次,

var arr = ['b', 'c', 'd'];
arr.reverse().push('a');
arr.reverse();

arr; // ["a", "b", "c", "d"]

你可以重新推送整个东西,

var arr = ['b', 'c', 'd'],
a2 = arr.slice();
arr.length = 0;
arr.push('a');
Array.prototype.push.apply(arr, a2);

arr; // ["a", "b", "c", "d"]

您可以使用 while 进行迭代,类似于您的 for

var arr = ['b', 'c', 'd'],
i = arr.length;
while (i-- > 0)
arr[i + 1] = arr[i];
arr[0] = 'a';

arr; // ["a", "b", "c", "d"]

如果您的目标是创建一个新引用,您可以重写最后两个中的任何一个,例如

var arr = ['b', 'c', 'd'],
a2 = ['a'];
Array.prototype.push.apply(a2, arr);

a2; // ["a", "b", "c", "d"]

如果我们只是打代码,

var arr = ['b', 'c', 'd'],
a2 = Array.bind(null, 'a').apply(null, arr);

a2; // ["a", "b", "c", "d"]

关于javascript - 无需 unshift 方法即可将项目添加到数组开头的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33459020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com