如何在html数组中获取固定条目的下一个条目

时间:2018-08-30 07:54:52

标签: javascript html

假设我们有数组

  

[a,b,c,d,e,f,g,h]。

我想编写一个函数,该函数随机获取数组中的值。 我已经用JS和HTML编写了此代码。

我的问题是这样的: 我要选择的字母的上一个和下一个字母。

例如,我们得到“ e”。然后我想要一个返回“ d”和“ f”的函数。 我该怎么办?

我的代码如下。 (我的js.file名为“ nyNumber.js”)。

function GetValue() {
  var myarray = new Array("a", "b", "c", "d", "e", "f", "g", "h");

  var random = myarray[Math.floor(Math.random() * myarray.length)];
  //alert(random);
  document.getElementById("message").innerHTML = random;
}
<input type="button" id="btnSearch" value="Give me" onclick="GetValue();" />
<p id="message"></p>

<script src="myNumber.js"></script>

5 个答案:

答案 0 :(得分:2)

假设数组中有字符串,则可以只获取索引和偏移量,以获取给定随机索引的左右值。

不在数组中的索引的值显示为undefined

var array = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'],
    random = Math.floor(Math.random() * array.length),
    left = array[random - 1],
    item = array[random],
    right = array[random + 1];
    
console.log(left || 'no left value', item, right || 'no right value');

答案 1 :(得分:1)

您应该将随机索引的值保存在变量中以获取其他索引, 但是,当然,您应该检查它是否具有前后。

function GetValue()
{
   var myarray= new Array(a,b,c,d,e,f,g,h);
   var index = Math.floor(Math.random() * myarray.length);
   var random = myarray[index];
   //alert(random);
   document.getElementById("message").innerHTML=random;
   return index;
}

现在您可以获取值并获取依赖于它的元素。

答案 2 :(得分:1)

考虑到闭环,第一个元素的左边不存在,因此将为您提供第一个元素的左边,而第一个元素的右边不存在,因此为您提供第一个元素为最后一个元素的右边。

var myarray = new Array("a", "b", "c", "d", "e", "f", "g", "h");
var random;

document.getElementsByClassName("item")[0].addEventListener("click", function (){
  random = Math.floor(Math.random() * myarray.length);
  document.getElementsByClassName("itemValue")[0].innerHTML = myarray[random];
  document.getElementsByClassName("siblings")[0].removeAttribute("disabled");
})

document.getElementsByClassName("siblings")[0].addEventListener("click", function (){
  var left = myarray[ (random - 1 + myarray.length) % myarray.length ];
  
    var right= myarray[ (random + 1) % myarray.length ];
    
  document.getElementsByClassName("leftSiblingValue")[0].innerHTML = left;
  document.getElementsByClassName("rightSiblingValue")[0].innerHTML = right;
})
<button class="item">item</button>
<button class="siblings" disabled>siblings</button>

<p><span>left siblign : </span><span class="leftSiblingValue"><span></p>
<p><span>item : </span><span class="itemValue"></span></p>
<p><span>right sibling : </span><span class="rightSiblingValue"></span></p>

答案 3 :(得分:0)

使用Array.prototype.indexOf MDN reference

var myArray = ["a","b","c","d","e"];

var value = myArray[Math.floor(Math.random() * myArray.length)];
console.log("First Value:", value);

var position = myArray.indexOf(value);

var next = myArray[position + 1];
console.log("Next Value:", next);

var before = myArray[position - 1];
console.log("Before Value:", before);

答案 4 :(得分:0)

var myarray = new Array("a", "b", "c", "d", "e", "f", "g", "h");
var random = myarray[Math.floor(Math.random() * myarray.length)];
//alert(random);
var position = myarray.indexOf(random);
var previousElement= myarray[position-1];
var nextElement= myarray[position+1];
console.log(previousElement);
console.log(nextElement);

一个简单的解决方案是使用indexOf函数获取随机值的位置,然后将数组指针向后移动1个位置,向前移动1个位置。这将为您提供所需的值。