Comment obtenir le indexOf un objet dans un AngularJS réponse de l'objet de collection?
Cas D'Utilisation
J'ai une collection d'objets renvoyés à partir d'un RESTE de demande. Angulaire remplit automatiquement à chaque élément une $$hashKey
. Le problème est que lorsque je recherche un objet dans ce tableau sans le $$hashKey
, elle renvoie -1. Cela fait sens. Malheureusement, je n'ai pas connaissance de la valeur de $$hashKey
.
Question
Est-il un moyen plus efficace de rechercher un objet dans une collection d'objets retournés à partir d'un RESTE de demande en AngularJS sans enlevant l' $$hashKey
propriété?
Code
function arrayObjectIndexOf(arr, obj) {
var regex = /,?"$$hashKey":".*?",?/;
var search = JSON.stringify(obj).replace(regex, '');
console.log(search);
for ( var i = 0, k = arr.length; i < k; i++ ){
if (JSON.stringify(arr[i]).replace(regex, '') == search) {
return i;
}
};
return -1;
};
OriginalL'auteur Pete | 2014-04-16
Vous devez vous connecter pour publier un commentaire.
angulaire.equals()
fait une comparaison en profondeur des objets sans les$
préfixé propriétés...Fonctionne très bien! Sauf que j'ai nommé la mienne:
indexOfObject
🙂OriginalL'auteur Anthony Chu
Puisque c'est angulaire, pourquoi ne pas utiliser le filtrage:
$filter (filtre)(pages, {id: pageId},true);
pages où est le tableau et l'id est la propriété de l'objet que vous voulez faire correspondre et pageId est la valeur que vous appariement avec.
OriginalL'auteur MrWiLofDoom
Ok, donc c'est un peu moche, mais c'est la solution la plus simple:
La
angular.toJson
peu dépouillé de tout attribut avec un $. Vous pourriez juste voulez stocker de nettoyage pour objet quelque part pour la recherche. Alternativement, vous pouvez écrire votre propre comparaison de trucs, mais c'est juste bleh.OriginalL'auteur Tim Brown
Utilisation lodash de trouver, où, filtre à manipuler des collections, vérifiez les docs http://lodash.com/docs
OriginalL'auteur Issam Zoli