首页 > 解决方案 > Reverse array with with splice() method

问题描述

I'm following a course of learning Javascript, saw this code but don't know exactly how it works. Basically what it does is reverse the numbers in the array.

Anyone who has a deeper understanding and would like to explain me of what the code does exactly?

var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

var knop = document.getElementById("knop");
knop.addEventListener("click", reverse);

function reverse() {
  for (var i = 0, j = a.length; i < a.length; i++) {
    a.splice(i, 0, a[j - 1]);
    a.splice(j, 1);
  }
  document.getElementById("demo1").innerHTML = a;
}
   <p id="demo1">Hier komt de inhoud na het omkeren</p>
    <button type="button" id="knop">Keerom</button>

标签: javascriptarraysreverse

解决方案


我假设您是在专门谈论这部分(不是 dom 交互)

查看它的最简单方法是添加一个 console.log()

var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
for (var i = 0, j = a.length; i < a.length; i++) {
  a.splice(i, 0, a[j - 1]);
  console.log('index:',  i)
  console.log('copy:',  a.join(','))
  a.splice(j, 1);
  console.log('trim:',  a.join(','))
}

当您查看输出时,您可以看到该函数将最后一个元素复制到 index 处的数组中i。然后它删除最后一项。它执行的次数与数组中的项目一样多

例子:

在这种情况下,它复制7第 3 和第 4 项之间的最后一项 ( ),位置在 index 3。然后删除7

index: 3
copy: 10,9,8,7,1,2,3,4,5,6,7
trim: 10,9,8,7,1,2,3,4,5,6

推荐阅读