我正在尝试实现“下一个”和“上一个”按钮,以帮助我浏览数组中的项目。
我正在使用数组中项目的索引来获取下一个或上一个项目。
示例:
arrA = [{_id:1,name:"T-Rex"},{_id:3,name:"Predator X"},{_id:4 ,name:"Velociraptor"},{_id: 6, name:"Triceratops"}]
当前对象的ID表示为
var selectedID = _id
下一个和上一个功能
next(){
var idx = arrA.map(x => x._id).indexOf(selectedID);
if (idx === arrA.length - 1){
//return first item
var next_name = arrA[0].name;
} else {
var next_name = arrA[idx + 1].name
}
previous(){
var idx = arrA.map(x => x._id).indexOf(selectedID);
if (idx === arrA[0]){
// return last item
var prev_name = arrA[arrA.length -1].name;
} else{
var prev_name = arrA[idx -1].name
}
}
预期结果是,当我单击两个按钮中的任何一个时,它应该将我带到下一个或上一个项目,但实际结果是它不停地循环遍历数组。
答案 0 :(得分:2)
使用模(%)时,一切都变得简单得多。它使您可以在列表中前进(向前或向后),而不必担心您排在开头还是结尾。
ParameterBag {#53
#parameters: []
}
client.on('guildMemberAdd', member => {
con.query(`SELECT * FROM blacklist WHERE id_discord = "${member.user.id}"`, (err, rows) => {
if (err) throw err;
if (rows.length == 1){
let raison = rows[1].raison;
const banembed = new Discord.RichEmbed()
.setColor("#FF0000")
.setTitle("Vous avez été bannit du serveur car vous faite partie de la blacklist !")
.addField("Motif", raison)
member.send(banembed);
member.ban();
}
}) });