2016-05-24 7 views
0

Ich habe ein Array, mit allen Daten, die vollständige Liste. Ich habe ein zweites Array mit nur wenigen dieser Daten.Angular Filter: Verwenden Sie nicht die Daten des anderen Array

Was ich tun möchte, ist die erste zu filtern, um nur die Daten zu erhalten, die sich von denen im zweiten Array unterscheiden. Und dann mache ein drittes Array mit dem gefilterten.

Hier sind die Arrays:

$scope.allparams = [{ 
    'tab': 'ADH', 
    'title': 'Adhérent' 
}, { 
    'tab': 'ADH', 
    'data': 'civilite', 
    'lib': 'Civilité', 
    'type': 'select' 
}, { 
    'tab': 'ADH', 
    'data': 'nom', 
    'lib': 'Nom', 
    'type': 'text' 
}, { 
    'tab': 'ADH', 
    'data': 'prenom', 
    'lib': 'Prénom', 
    'type': 'text' 
}, { 
    'tab': 'ADH', 
    'data': 'dateNaissance', 
    'lib': 'Date de naissance', 
    'type': 'date' 
}, { 
    'tab': 'ADH', 
    'data': 'nationalite', 
    'lib': 'Nationalité', 
    'type': 'select' 
}, { 
    'tab': 'ADH', 
    'data': 'statut', 
    'lib': 'Statut', 
    'type': 'select' 
}, { 
    'tab': 'DET', 
    'title': 'Détail comptable', 
    'type': 'select' 
}, { 
    'tab': 'DET', 
    'data': 'saison', 
    'lib': 'Saison', 
    'type': 'select' 
}, { 
    'tab': 'DET', 
    'data': 'activite', 
    'lib': 'Activité', 
    'type': 'select' 
}, { 
    'tab': 'DET', 
    'data': 'prix', 
    'lib': 'Prix', 
    'type': 'currency' 
}]; 

if (exportService.getStockParams() != undefined) { 
    // The second one, filled with a method 
    var stockParams = exportService.getStockParams(); 
} 

Hier ein exemple des zweiten Feldes ist:

[{ 
    "tab": "ADH", 
    "data": "nom", 
    "lib": "Nom", 
    "ordersource": 2, 
    "added": true 
}, { 
    "tab": "ADH", 
    "data": "prenom", 
    "lib": "Prénom", 
    "ordersource": 2, 
    "order": null, 
    "added": true 
}, { 
    "tab": "ADH", 
    "data": "dateNaissance", 
    "lib": "Date de naissance", 
    "ordersource": 2, 
    "order": null, 
    "added": true 
}] 

Sag mir, wenn Sie weitere Informationen benötigen.

Ich bin neu in Angular, und die Filter scheinen ziemlich schwer zu meistern.

Ich hoffe, Sie könnten helfen.

+0

"... anders zu den in der zweiten Reihe" Ich sehe nur ein Array $ scope.allparams – shershen

+0

Das zweite ist 'stockParams' mit einem –

+0

plz bieten Methode gefüllt Beispiel des resultierenden zweiten Arrays werden die Daten, die von exportService.getStockParams() – shershen

Antwort

1

Sie können dazu differenceWith verwenden. Oder ohne lodash mit nur Filter und jeder Art von Array.

const all = [ 
 
    {x: 1, y: 2}, 
 
    {x: 1, y: 5}, 
 
    {x: 1, y: 6} 
 
]; 
 

 
const partial = [ 
 
    {x: 1, y: 5} 
 
]; 
 

 
const diff = difference(all, partial); 
 

 
console.log(diff) 
 

 
function difference(first, second) { 
 
    return first.filter((item) => { 
 
    return !second.every(angular.equals.bind(null, item)); 
 
    }); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

+0

Wenn ich die Verwendung einer Skriptdatei nur dafür verhindern kann, wäre das besser:/Aber danke –

+0

Kein Problem, meine Antwort geändert, so dass lodash nicht mehr verwendet wird. – sielakos

+0

bist du sicher, dass der op ES6 benutzt? Sie verwenden eine Pfeilfunktionsdarstellung – naveen

Verwandte Themen