J'ai deux tableaux qui ne contiennent que des objets pour des groupes. On contient tous les groupes sur mon site. L'autre contient tous les groupes qu'un utilisateur spécifique appartient à.
Je voudrais soustraire: Je suis Utiliser Angularjs, je ne suis pas sûr que cela aide ici ou non (peut-être qu'un filtre pourrait être utilisé). p> J'ai regardé les questions précédentes et je suis tombé sur certaines options: p> Ce sont ceux que j'ai essayés: p> ceci est un des tableaux: p> Scandedgroups: P> Tous les groupes CODE> -
Groupes d'utilisateurs CODE> =
Les groupes restants CODE> P>
[{
id: 115,
name: 'Test Group 2',
Description: '',
owner: 10,
OwnerIsUser: false,
}, {
id: 116,
name: 'Test Group 3',
Description: '',
owner: 71,
OwnerIsUser: false,
}, {
id: 117,
name: 'Test Group 4',
Description: '',
owner: 71,
OwnerIsUser: false,
}, {
id: 118,
name: 'Test Group 5',
Description: '',
owner: 115,
OwnerIsUser: false,
}, {
id: 119,
name: 'Test Group 6',
Description: '',
owner: 8,
OwnerIsUser: true,
}];
4 Réponses :
Vous pouvez essayer ce json diff strong> p>
Je ne comprends pas. J'essaie d'obtenir un troisième matrice qui est la différence entre 2 graphiques d'objets. Cette solution comparaisse simplement deux tableaux.
(Peut-être qu'un filtre pourrait être utilisé). P>
Si vous souhaitez filtrer tous les groupes inutilisés, un filtre est la bonne décision: p>
xxx pré> voici le violon . P>
pour la documentation prennent un poloog à MDN arra.pototype.filter p>
pour une solution future avec code> ou
FINDIDEX CODE> Jetez un coup d'œil à Ceci Article fin. p>
Edit: Pour traiter avec
Objets CODE> Vous pouvez facilement adapter la fonction de filtrage et utiliser une fonction de comparaison personnalisée à la place
indexof code>. Voici un autre Fiddle pour ce cas. P> blockQquote>
J'ai ajouté un violon pour cette affaire.
Vous répondez est le seul qui fonctionne réellement. Je passe juste du mal à comprendre. Je vais jeter un coup d'œil à la documentation demain, cela pourrait aider. Merci.
J'ai essayé votre solution mais j'ai édité les groupes pour refléter la manière dont mes données sont modélisées. Cela ne fonctionne pas malheureusement. jsfiddle.net/udaug/6
Je pense que vous devriez d'abord extraire des identifiants vers un objet, puis comparez deux objets. EG:
var assignedGroupsIds = {}; var groupsIds = {}; var result = []; $scope.assignedGroups.forEach(function (el, i) { assignedGroupsIds[el.id] = $scope.assignedGroups[i]; }); $scope.groups.forEach(function (el, i) { groupsIds[el.id] = $scope.groups[i]; }); for (var i in groupsIds) { if (!assignedGroupsIds.hasOwnProperty(i)) { result.push(groupsIds[i]); } } return result;
Hé, je travaille toujours sur ça. Je pense que je suis en train de courir dans un problème de synchronisation: j'ai téléchargé mon service et ajouté des notes: jsfiddle.net / 9DZ5A / 1
Je pense que votre commentaire est un problème complètement différent. Je n'ai aucune idée de ce que sont les spservices et à quel point pourrais-je passer ou déboguer cela. Mais je suis sûr que les groupes d'affectation de votre code sont indéfinis. Peut-être que c'est une question de scoper?
Vous pouvez utiliser une combinaison de filtre angulaire JS $ filtre CODE> SERVICE et LO-DAST'S
FINDOWERWELS code> pour obtenir des objets uniques dans deux tableaux, essayez ceci:
groupsRemaining = $filter('filter')(allTheGroups, function(allTheGroupsObj){
return !angular.equals(allTheGroupsObj, $filter('filter')(userGroups, function(userGroupsObj){
return angular.equals(allTheGroupsObj,userGroupsObj);})[0]);
});