假设我们有数组
[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>
答案 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个位置。这将为您提供所需的值。