Comment basculer un élément dans un tableau en utilisant JavaScript?
Voici mon code pour le javascript, pour cette simple tâche:
- Supprimer l'élément s'il existe dans un tableau.
- Ajouter l'élément s'il n'est pas dans un tableau.
if(_.contains(this.types,type_id)){ var index = this.types.indexOf(type_id); this.types.splice(index,1); } else{ this.types.push(type_id); }
Est-il un moyen plus efficace de faire cela?
source d'informationauteur wwli | 2013-06-17
Vous devez vous connecter pour publier un commentaire.
Si vous vous souciez de l'efficacité sera alors peut-être l'aide d'un tableau pour mettre en œuvre un ensemble est une mauvaise idée. Par exemple à l'aide d'un objet que vous pouvez faire:
puis après beaucoup de ajout/suppression de toutes les opérations que vous pouvez ne garder que les touches lorsque la valeur est 1
De cette façon, chaque ajout/retrait est
O(1)
et vous avez seulement besoin d'unO(n)
opération pour obtenir le résultat final.Si les touches sont tous des "petits" nombres peut être un masque de bits est même pas la peine de l'effort (pas testé)
Vous pourriez le faire sans une 3ème partie de la bibliothèque, ce qui serait plus efficace, comme cela. (cela ne supprime la première occurrence d'une valeur si trouvé, et non plusieurs)
Javascript
Sortie
Sur jsfiddle
Vous pouvez utiliser le lodash fonction "xor":
Si vous n'avez pas un tableau de la 2ème paramètre, vous pouvez simpy envelopper la variable dans un tableau
Voici la doc: https://lodash.com/docs/4.16.4#xor
Regarder cette réponse de question similaire.
Lodash problème
Lodash gist
Code:
À l'aide de underscorejs
Utilisation: