在这篇博客中,我们将为您展示一段有趣的代码,它实现了随机抽取姓名和城市的功能。以下是实现步骤:
状态变量定义:
首先,定义了一系列的状态变量:
@State city:string[]=['北京','上海','广州','深圳','杭州','南京','苏州','重庆','成都','长沙']
@State curIndex:number=-1
@State nameIndex:number=0
@State name:string[]=['张三','李四','王五','赵六']
@State num:number=0
@State nameNum:number=0
@State city:string[]=['北京','上海','广州','深圳','杭州','南京','苏州','重庆','成都','长沙']
:用于存储城市的数组。@State curIndex:number=-1
:当前选中的城市索引,初始值为 -1。@State nameIndex:number=0
:当前选中的姓名索引。@State name:string[]=['张三','李四','王五','赵六']
:用于存储姓名的数组。@State num:number=0
:与城市抽取相关的随机数。@State nameNum:number=0
:与姓名抽取相关的随机数。
调整数值的函数:
接下来,定义了一个调整数值的函数 adjustValue(num:number)
,用于处理随机数的范围限制。
adjustValue(num:number) {
let limit = 10;
while (num > limit) {
limit *= 10;
}
return limit;
}
随机抽取的函数:
然后是关键的 lottery()
函数,它实现了随机抽取的逻辑:
lottery(){
do {
this.num= Math.floor(Math.random() * this.adjustValue(this.city.length))
}
while (this.num>this.city.length-1)
this.curIndex=this.num
do {
this.nameNum= Math.floor(Math.random() * this.adjustValue(this.name.length))
}
while (this.nameNum>this.name.length-1)
this.nameIndex=this.nameNum
}
- 对于城市的抽取,通过生成随机数,并确保其在有效范围内,最终确定当前选中的城市索引。
- 对于姓名的抽取,采用类似的方式生成随机数并确定选中的姓名索引。
页面构建部分:
在构建页面部分:
build() {
Column({space:10}){
Text('随机获取姓名,城市')
.fontSize(18)
.fontWeight(600)
.alignSelf(ItemAlign.Center)
Text('城市:')
Flex({wrap:FlexWrap.Wrap}){
ForEach(this.city,(item:string,index:number)=>{
Text(item)
.padding(5)
.border({width:2,color:'#999',radius:5})
.onClick(()=>{
this.curIndex=index
})
.margin({left:10,right:10,top:10})
})
}
Text('姓名:')
Flex({wrap:FlexWrap.Wrap}){
ForEach(this.name,(item:string,index:number)=>{
Text(item)
.padding(5)
.border({width:2,color:'#999',radius:5})
.onClick(()=>{
this.nameIndex=index
})
.margin({left:10,right:10,top:10})
})
}
Text('我是来自中国'+(this.curIndex==-1?'':this.city[this.curIndex])+'的'+this.name[this.nameIndex])
.alignSelf(ItemAlign.Center)
.fontSize(20)
Button('抽取姓名,城市')
.onClick(()=>{
this.lottery()
})
.alignSelf(ItemAlign.Center)
}
.padding(10)
.alignItems(HorizontalAlign.Start)
.width('100%')
}
- 展示了标题“随机获取姓名,城市”。
- 分别展示城市和姓名的列表,每个元素都有相应的点击事件,点击可更新选中的索引。
- 展示最终抽取的结果。
- 提供了一个“抽取姓名,城市”的按钮,点击时触发
lottery()
函数进行抽取。
这段代码在实现随机抽取姓名和城市的功能时,考虑了随机数的范围限制和页面的交互逻辑,为用户提供了有趣的体验。在实际开发中,可以根据具体需求进一步扩展和优化功能。