0
votes

Comment trouver une occurrence d'objets dans un tableau

J'ai besoin de savoir si un tableau d'objets contient au moins deux mêmes objets de la part, en JavaScript.

J'ai une forme qui permet aux personnes de créer des questions (titre, description, type, options de réponse). Je dois vérifier si l'utilisateur a entré plusieurs options de réponse avec la même étiquette. Ils sont stockés dans un tableau. P>

// The array of answer options
let array = [{value: 'a'}, {value: 'b'}, {value: 'c'}, {value: 'a'}]


0 commentaires

5 Réponses :


0
votes

Utilisez FINDIDEX code> :

p>

let array = [{value: 'a'}, {value: 'b'}, {value: 'c'}, {value: 'a'}];
const index = array.findIndex(({ value }) => value == "a");
console.log(index);


1 commentaires

Cela me donne l'index de la première occurrence exacte? J'aimerais savoir s'il y a plusieurs {valeur: 'a'} , pas seulement l'index du premier.



1
votes

Les objets distincts ne sont jamais === code> les uns aux autres, vous devrez donc utiliser une méthode différente. Une option consiste à créer un ensemble d'objets stridigtifs et à renvoyer truelle une fois que toute chaîne de duplication est trouvée:

p>

const hasDupes = (arr) => {
  const strings = new Set();
  for (const obj of arr) {
    const string = JSON.stringify(obj);
    if (strings.has(string)) {
      return true;
    }
    strings.add(string);
  }
  return false;
};
console.log(hasDupes([{value: 'a'}, {value: 'b'}, {value: 'c'}, {value: 'a'}]));
console.log(hasDupes([{value: 'a'}, {value: 'b'}, {value: 'c'}]));


0 commentaires

0
votes

index de retournera l'instance d'un objet xxx pré>

car ils sont à la fois des instances différentes d'objets. p>

Vous pouvez trouver l'objet P>

const obj = array.find(item => item.value === 'a')


0 commentaires

1
votes

Si vous êtes uniquement préoccupé par la propriété code> CODE> et que vous utilisez le cas n'est pas plus complexe et que vous pouvez le faire simplement en une ligne via:

p>

let hasDupes = arr => new Set(arr.map(x => x.value)).size !== arr.length

console.log(hasDupes([{value: 'a'}, {value: 'b'}, {value: 'c'},{value: 'a'}]))
console.log(hasDupes([{value: 'a'}, {value: 'b'}, {value: 'c'}]))


0 commentaires

0
votes

Vous pouvez utiliser Lodash.js pour comparer deux objets. Veuillez consulter l'exemple ci-dessous. XXX

Cette fonction reviendra 2.


0 commentaires