我在一个简单的应用程序中间,想法是随机选择而不重复数组的值。
我设法通过一个功能来完成它,但此刻我开始通过它我有两个未定义,我不知道为什么
代码示例:
<Button
android:id="@+id/memories"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp"
android:text="Memories >"
app:layout_constraintBottom_toTopOf="@+id/scrollView2"
app:layout_constraintHorizontal_bias="0.502"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ScrollView
android:id="@+id/scrollView2"
android:layout_width="0dp"
android:layout_height="450dp"
android:layout_marginBottom="6dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:background="#808000"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent">
<LinearLayout
android:id="@+id/SavedBroadcasts"
android:layout_width="304dp"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:layout_editor_absoluteX="8dp"
tools:layout_editor_absoluteY="0dp" >
</LinearLayout>
</ScrollView>
答案 0 :(得分:1)
您只在开始时设置splice
的值,而不是更新它,即使您使用next()
从阵列中删除条目也是如此。因此,在几次调用undefined
后,您越来越有可能访问现在为totalnum
的数组的索引,因为它们已被拼接出来。您需要随时更新<script>
var num = [1, 2, 3, 4, 5, 6, 7, 8, 9];
cont = 0;
function next() {
var indice = Math.floor(Math.random() * (cont < num.length ?++cont:0));
var number = num[indice];
document.getElementById("hola2").innerHTML =num.splice(indice,1);
}
</script>
的值或直接引用数组长度(我更喜欢使用后者,因为它更简单,更直观,更易读)。
export class calculateRoute extends Component{
constructor () {
super();
this.state = {showImage: false};
}
showImageFunc = () => {
this.setState({showImage: true});
}
render() {
return (
<div>
{this.state.showImage &&
<View>
<Image
style={{width: 50, height: 50}}
source={require('./Alexa.png')} />
</View>}
<Button
onPress={this.showImageFunc}
title="Calculate Route"
color="#841584"
accessibilityLabel="Button to calculate route" />
</div>
);
}
}
答案 1 :(得分:1)
由于splice()
更改了数组的长度,因此每次只使用num
的长度来获取随机索引,而不需要其他变量
var num = [1, 2, 3, 4, 5, 6, 7, 8, 9];
function next() {
if (!num.length) return;// do something when no more exist
var indice = Math.floor(Math.random() * num.length);
var number = num.splice(indice, 1);
document.getElementById("hola2").innerHTML = number;
}
document.getElementById("btn").addEventListener('click', next)
<div id="hola2"></div>
<button id="btn">Next</button>