如何在 JavaScript 中在数组开头添加新数组元素?
2011-11-10
1602884
我需要在数组开头添加或添加元素。
例如,如果我的数组如下所示:
[23, 45, 12, 67]
并且我的 AJAX 调用的响应是
34
,我希望更新后的数组如下所示:
[34, 23, 45, 12, 67]
目前我计划这样做:
var newArray = [];
newArray.push(response);
for (var i = 0; i < theArray.length; i++) {
newArray.push(theArray[i]);
}
theArray = newArray;
delete newArray;
有没有更好的方法?JavaScript 是否有任何内置功能可以执行此操作?
我的方法的复杂度为
O(n)
,看到更好的实现真的很有趣。
3个回答
使用
unshift
。它类似于
push
,只不过它将元素添加到数组的开头而不是结尾。
-
unshift
/push
- 将元素添加到数组的开头/结尾 -
shift
/pop
- 删除并返回数组的第一个/最后一个元素
一个简单的图表...
unshift -> [array] <- push
shift <- [array] -> pop
和图表:
添加 | 删除 | 开始 | 结束 | |
---|---|---|---|---|
推送
|
X | X | ||
弹出
|
< /td> | X | X | |
unshift
|
X | X | ||
shift
|
X | X |
查看
MDN 数组文档
。几乎每种能够从数组中推送/弹出元素的语言都具有取消移动/移动(有时称为
push_front
/
pop_front
)元素的能力,您永远不必自己实现这些。
正如评论中指出的那样,如果您想避免改变原始数组,可以使用
concat
,它将两个或多个数组连接在一起。您可以使用它在功能上将单个元素推送到现有数组的前面或后面;为此,您需要将新元素转换为单个元素数组:
const array = [3, 2, 1]
const newFirstElement = 4
const newArray = [newFirstElement].concat(array) // [ 4, 3, 2, 1 ]
console.log(newArray);
concat
还可以附加项目。
concat
的参数可以是任何类型;如果它们还不是数组,则它们会被隐式包装在单元素数组中:
const array = [3, 2, 1]
const newLastElement = 0
// Both of these lines are equivalent:
const newArray1 = array.concat(newLastElement) // [ 3, 2, 1, 0 ]
const newArray2 = array.concat([newLastElement]) // [ 3, 2, 1, 0 ]
console.log(newArray1);
console.log(newArray2);
user229044
2011-11-10
var a = [23, 45, 12, 67];
a.unshift(34);
console.log(a); // [34, 23, 45, 12, 67]
Mak
2011-11-10
使用 ES6,使用扩展运算符
...
:
演示
var arr = [23, 45, 12, 67];
arr = [34, ...arr]; // RESULT : [34,23, 45, 12, 67]
console.log(arr)
Abdennour TOUMI
2016-09-16