如何使用splice交换数组中的数据

时间:2016-06-25 18:55:29

标签: javascript jquery

我有一个小问题。我只是想交换数组中的数据。我正在使用拼接,但最后仍保留1个元素。如何在不保留其他数据的情况下完全替换当前的数据?



$("#test").click(function(){
fruits.splice(0, 1, "Lemon", "Kiwi");
    document.getElementById("demo").innerHTML = fruits;

});
var fruits = ["Banana", "Orange"];

var col1 = ["Banana", "Orange","pies","pretzels"];
var col2 = ["Banana", "Orange"];
document.getElementById("demo").innerHTML = fruits;

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<p>Click the button to add and remove elements.</p>

<button id="test" onclick="myFunction();">Try it</button>

<p id="demo"></p>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

delete count设置为数组长度。

fruits.splice(0, fruits.length, "Lemon", "Kiwi");

答案 1 :(得分:1)

来自MDN:Array.prototype.splice()

  

array.splice(start, deleteCount[, item1[, item2[, ...]]])

  

启动

     

开始更改数组的索引(原点为0)。如果大于数组的长度,实际的起始索引将是   设置为数组的长度。如果否定,将开始那么多   最后的元素。

     

deleteCount

     

一个整数,指示要删除的旧数组元素的数量。如果deleteCount为0,则不删除任何元素。在这种情况下,你应该   指定至少一个新元素。如果deleteCount大于   数组中从开始处开始的元素数量,然后全部   将删除通过数组末尾的元素。       如果省略deleteCount,则deleteCount将等于(arr.length - start)。

     

item1,item2,...

     

要添加到数组的元素,从起始索引开始。如果您未指定任何元素,则splice()将仅删除元素   来自阵列。

你的deleteCount被声明为1,这就是为什么它遗漏了另一个值,因为你已经2了。

fruits.splice(0, 1, "Lemon", "Kiwi");

应该是

fruits.splice(0, 2, "Lemon", "Kiwi");

或者更好地采用@PranavCBalan方法将deleteCount设置为您的变量长度

$("#test").click(function(){
fruits.splice(0, 2, "Lemon", "Kiwi");
    document.getElementById("demo").innerHTML = fruits;

});
var fruits = ["Banana", "Orange"];

var col1 = ["Banana", "Orange","pies","pretzels"];
var col2 = ["Banana", "Orange"];
document.getElementById("demo").innerHTML = fruits;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<p>Click the button to add and remove elements.</p>

<button id="test">Try it</button>

<p id="demo"></p>