0
votes

Vérifiez si l'ID utilisateur correspond à un dans le tableau

J'essaie de vérifier si l'ID d'un utilisateur se trouve dans ce tableau et si tel est le cas, j'en récupère également le "texte".

Tableau:

const staff = [
    {
        user: '245569534218469376',
        text: 'dev'
    },
    {
        user: '294597887919128576',
        text: 'loner'
    }
];

J'ai essayé if (staff.user.includes (msg.member.id)) (ce que je ne pensais pas fonctionner, et ce n'est pas le cas.)


3 commentaires

Il vous manque une balise de langue. Si JavaScript: essayez quelque chose comme const match = array.find (value => value.user === msg.member.id);


Je viens d'essayer: const match = staff.find (value => value.user === msg.member.id) bot.createMessage (msg.channel.id, match.toString ()) - Renvoie [objet objet] - Je ne sais pas ce que j'ai besoin d'ajouter.


inclut ne fonctionne bien que pour les objets de valeur tels que les chaînes et les nombres, pour les objets de référence, il ne correspondra que si vous avez une référence à l'objet que vous testez. Utilisez plutôt la méthode some.


4 Réponses :


0
votes

const findUser = (users, id) => users.find(user => user.id === id)

const usersExample = [
  {
    id: '123456765',
    text: 'sdfsdfsdsd'
  },
  {
    id: '654345676',
    text: 'fdgdgdg'
  }
]
//////////////////


const user = findUser(usersExample, '123456765')

console.log(user && user.text)


0 commentaires

0
votes

La méthode some sur un tableau est utilisée pour dire si un élément remplit une condition, elle est similaire à la méthode find mais la méthode find renvoie l'élément où la méthode some renvoie vrai ou faux.

const staff = [
    {
        user: '245569534218469376',
        text: 'dev'
    },
    {
        user: '294597887919128576',
        text: 'loner'
    }
];

const isStaff = (staff, id) => staff.some(s => s.user === id);

console.log(isStaff(staff, '123'));

console.log(isStaff(staff, '245569534218469376'));


0 commentaires

0
votes

Vous pouvez essayer quelque chose comme ceci:

const staff = [
    {
        user: '245569534218469376',
        text: 'dev'
    },
    {
        user: '294597887919128576',
        text: 'loner'
    }
];

let item = staff.find(item => item.user == '294597887919128576'); // msg.member.id

if (item) {
    console.log(item.text);
}


0 commentaires

0
votes

Une autre façon de faire est:

const inArray = (array, id) => array.filter(item => item.user === id).length >= 1;

const users = [
{
  user: '245569534218469356',
  text: 'foo'
  }, {
  user: '245564734218469376',
  text: 'bar'
  }, {
  user: '246869534218469376',
  text: 'baz'
  }
];


console.log(inArray(users, '246869534218469376'));  // true 
console.log(inArray(users, '222479534218469376'));  // false


0 commentaires