我想创建一个在 Javascript 中交换数组的 2 个元素的函数,所以我创建了这段代码:
let arrayOne = ["elementA","elementB","elementC","elementD","elementE","elementF","elementG","elementH","elementI"];
function swapThatFails(element1,element2) {
arrayOne[arrayOne.indexOf(element1)] = element2;
arrayOne[arrayOne.indexOf(element2)] = element1;
console.log("arrayOne = ",arrayOne);
}
swapThatFails ("elementA", "elementC");
但是,它对原始数组没有任何改变。
我设法通过获取要交换的数组的索引来使其工作:
let arrayTwo = ["elementA","elementB","elementC","elementD","elementE","elementF","elementG","elementH","elementI"];
function swapThatWorks(element1,element2) {
let index1 = arrayTwo.indexOf(element1);
let index2 = arrayTwo.indexOf(element2);
arrayTwo[index1] = element2;
arrayTwo[index2] = element1;
console.log("arrayTwo = ",arrayTwo);
}
swapThatWorks ("elementA", "elementC");
对我来说,它们都是相同的,除了第二个是分两步完成的,所以看起来更容易理解。
为什么第一个不起作用,而第二个起作用?
let arrayOne = ["elementA","elementB","elementC","elementD","elementE","elementF","elementG","elementH","elementI"];
let arrayTwo = ["elementA","elementB","elementC","elementD","elementE","elementF","elementG","elementH","elementI"];
function swapThatFails(element1,element2) {
arrayOne[arrayOne.indexOf(element1)] = element2;
arrayOne[arrayOne.indexOf(element2)] = element1;
console.log("arrayOne = ",arrayOne);
}
function swapThatWorks(element1,element2) {
let index1 = arrayTwo.indexOf(element1);
let index2 = arrayTwo.indexOf(element2);
arrayTwo[index1] = element2;
arrayTwo[index2] = element1;
console.log("arrayTwo = ",arrayTwo);
}
swapThatFails ("elementA", "elementC");
swapThatWorks ("elementA", "elementC");
四季花海
相关分类