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'}]
5 Réponses :
Utilisez FINDIDEX code> :
p>
let array = [{value: 'a'}, {value: 'b'}, {value: 'c'}, {value: 'a'}];
const index = array.findIndex(({ value }) => value == "a");
console.log(index);
Cela me donne l'index de la première occurrence exacte? J'aimerais savoir s'il y a plusieurs {valeur: 'a'} code>, pas seulement l'index du premier.
Les objets distincts ne sont jamais p> === 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: 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'}]));
index de retournera l'instance d'un objet 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')
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'}])) Vous pouvez utiliser Lodash.js pour comparer deux objets.
Veuillez consulter l'exemple ci-dessous. Cette fonction reviendra 2. P> p>