javascript - 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>
解决方案
我假设您是在专门谈论这部分(不是 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
推荐阅读
- c++ - 使用 cpprest 上传文件,给出 501 错误作为响应
- meteor - 在流星中的任何文件更改上重建一切
- exchange-server-2013 - 为一组特定用户设置邮箱大小的脚本
- read-eval-print-loop - 如何创建 Perl 6 REPL 插件?
- c - Windows 凭据提供程序 - 桌面锁定时密码过期
- android - 媒体元数据检索器缩放图像
- notifications - 从 C++/WinRT DLL 激活
- ssl - 如果定义了 k8s API tls 密码,则 k8s 上的 Rabbitmq 对等点发现失败
- rabbitmq - 通过 Web 控制台设置时,Rabbitmq x-overflow reject-publish 不起作用
- string - 从批处理文件中的文件中选择随机行