繁体   English   中英

JS 将数组减 1

[英]JS increment an array down by 1

let span = document.querySelector('.myspan')
let arr = [1, 2, 3]

document.addEventListener('keydown', function(event){
  var x = arr.length
  if (event.keyCode === 40) { // down
    span.innerHTML = arr[x-1]
    x--
  }
})

<span class="myspan"></span>

当你按下down键盘,跨度应显示的最后一个项目arr数组。 这里的问题是,当你再次按下,x值始终是相同的3凭什么我succeffuly一个增减,所以我能最后在第二个之前看到该项目down机等?

你要么:

  1. 有一个变量,你记得你的位置,或者

  2. 修改数组

对于#1,您将从(例如)开始;

let pos = arr.length;

arr一起。 然后在您的事件处理程序中:

if (pos > 0) {
    span.innerHTML = arr[--pos]; // `--pos` modifies `pos`, then uses the result
}

对于 #2,如果要修改数组,可以使用pop方法获取最后一个条目并将其删除。 所以:

if (arr.length) {
    span.innerHTML = arr.pop();
}

您可以添加一个全局变量indexLocation ,它会在您按下向下按钮时不断调整。 我添加了一个额外的函数adjustIndexLocation()来进行必要的计算。

 let span = document.querySelector('.myspan') let arr = [1, 2, 3] var indexLocation = -1; document.addEventListener('keydown', function(event){ var arrayLength = arr.length; if (event.keyCode === 40) { adjustIndexLocation(arrayLength); span.innerHTML = arr[ indexLocation ]; } }) function adjustIndexLocation(arrayLength) { indexLocation--; if(indexLocation < 0) indexLocation = arrayLength - 1; }
 <span class="myspan"></span>

.pop 从数组中删除最后一个元素并返回它

document.addEventListener('keydown', function(e){
    if (e.keyCode === 40) { // down

    alert(arr.pop())
  } 
})

您正在减少x的值而arr.length的值。

x不是对arr.length引用

但是,从数组中读取最后一个值,然后将值降低为两个单独的操作,这是解决问题的一种非常冗长的方法。 只需使用pop方法

span.innerHTML = arr.pop();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM