创建“下一个”和“上一个”按钮以使用索引浏览数组?

时间:2019-10-28 12:32:48

标签: javascript arrays

我正在尝试实现“下一个”和“上一个”按钮,以帮助我浏览数组中的项目。

我正在使用数组中项目的索引来获取下一个或上一个项目。

示例:

  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
  }

}

预期结果是,当我单击两个按钮中的任何一个时,它应该将我带到下一个或上一个项目,但实际结果是它不停地循环遍历数组。

1 个答案:

答案 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();
  }
}) });