开发者社区 问答 正文

如何在Javascript数组的开头添加新的数组元素?

我需要在数组的开头添加或添加元素。

例如,如果我的数组如下所示:

[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)看到更好的实现将非常有趣。

展开
收起
保持可爱mmm 2020-01-08 16:25:51 502 分享 版权
1 条回答
写回答
取消 提交回答
  • 使用unshift。就像一样push,除了它在数组的开头而不是结尾添加元素。

    unshift// push-将元素添加到数组的开头/结尾
    shift// pop -删除并返回数组的第一个/最后一个元素
    

    一个简单的图...

    unshift -> array <- push shift <- array -> pop

    和图表:

          add  remove  start  end
    

    push X X pop 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 ]

    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 ]

    问题来源于stack overflow

    2020-01-08 16:27:16
    赞同 展开评论