我有一个小问题。我只是想交换数组中的数据。我正在使用拼接,但最后仍保留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;
答案 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>