如何将元素推入数组的特定位置?

25

我正在尝试高效地编写一个语句,将元素推到数组的第1个位置,并将该位置或之后的元素向后移动一位。

array = [4,5,9,6,2,5]

#push 0 to position 1

array = [4,0,5,9,6,2,5]

#push 123 to position 1

array = [4,123,0,5,9,6,2,5]

如何编写最佳代码?(可使用JavaScript或CoffeeScript)

谢谢!


你可以使用以下代码在JavaScript中将项目插入到特定索引的数组中: array.splice(index, 0, item); 其中,'array'是目标数组,'index'是要插入项目的位置,'item'是要插入的项。如果要替换现有项,请更改第二个参数(设置为1)并将要替换的项放在第三个参数中。 - HasanCseBuet
1
http://www.w3schools.com/jsref/jsref_splice.asp - Anand Shah
3
@Anand:请不要再访问w3fools.com,因为有更好的参考资料可用(https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice)(http://es5.github.com/#x15.4.4.12)。 - mu is too short
1
可能是重复的问题:如何在特定索引处将项插入数组? - Rodrigo Salgado Atala
4个回答

40
array = [4,5,9,6,2,5]

#push 0 to position 1
array.splice(1,0,0)

array = [4,0,5,9,6,2,5]

#push 123 to position 1
array.splice(1,0,123)

array = [4,123,0,5,9,6,2,5]

3
注意:splice方法返回的是被移除的元素数组。在这些例子中,没有元素被移除,因此console.log(array.splice(1,0,123))将返回[]。应该阅读文档。 - Pakman
该手册(http://www.w3schools.com/jsref/jsref_splice.asp)还提到(正如[Vlada](https://dev59.com/N2oy5IYBdhLWcg3wHqmC#29098872)和[user12838586指出的那样](https://dev59.com/N2oy5IYBdhLWcg3wHqmC#60868093))`splice(position, numberOfItemsToRemove, item)`,特别是对第二个参数进行了解释。 - Cadoiz

20
在数组中将任何项推到特定索引,请使用以下语法。
// The original array
var array = ["one", "two", "four"];
// splice(position, numberOfItemsToRemove, item)
array.splice(2, 0, "three");

console.log(array);  // ["one", "two", "three", "four"]

4

splice()函数是唯一一个允许你将元素添加到数组特定位置的原生数组函数

我将获得一个数组,该数组是您在问题中输入的描述

splice(position, numberOfItemsToRemove, item)
  • position = 您想添加新项的位置。
  • numberOfItemsToRemove = 这表示要删除的项目数量。这意味着删除将根据添加新项的位置开始。

Ex = 如果您想将1位置添加到123,结果将是这样的([4,123,0,5,9,6,2,5]), 但如果您给numberOfItemsToRemove 1,它将在123后删除第一个元素,如果您给2,则删除123后的两个元素。

  • item = 您要添加的新项。

function my_func(){
        var suits = [4,0,5,9,6,2,5]
        
        suits.splice(1 , 0 , 123);

        document.getElementById('demo').innerHTML = suits;
}
<p id="demo">4,0,5,9,6,2,5</p>
<button id="btn01" onclick="my_func()">Splice Array</button>


附加信息:您可以在此处找到手册 - Cadoiz

0

你能不能只做这个:

myArray[idx] = foo;

你需要一个大小合适的数组,但是我不确定对于一个没有请求索引的列表进行splice操作的行为是什么。


啊,我刚意识到如果你想保留数组中的其他元素,splice函数非常好用。傻眼了。 - Frank Lewis
是的,@Frank - 这种方法会覆盖在 idx 处的元素,所以不是这里的答案。 - Cadoiz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接