je le fichier JSON suivant: http://pastebin.com/1TguvZXcComment modifier un tuyau pour supprimer des entrées en double?
Le double 'corps' se trouvent dans le tableau en traversant à travers le réseau:
models[x].years[y].styles[z].submodel.body
En d'autres termes:
models[0].years[0].styles[0].submodel.body
devrait être vérifié pour les doublons dans:
models[0].years[0].styles[1].submodel.body
models[0].years[0].styles[2].submodel.body
models[0].years[0].styles[n].submodel.body
Le reste des données est inutile pour moi.
J'ai le tuyau suivant:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'filterByCategory'
})
export class FilterByCategoryPipe implements PipeTransform {
transform(input: any , search: string): any[] {
if (input === undefined || input.length === 0) {
return input;
}
const filteredArr: Array<any> = JSON.parse(JSON.stringify(input));
for (const model of filteredArr) {
for (const year of model.years) {
year.styles = year.styles.filter(style => {
return style.submodel.body === search;
});
}
}
return filteredArr;
}
}
Comment pourrais-je ajouter à ma fonction .filter un « test » supplémentaire qui vérifie si la valeur de « submodel.body » existe dans l'un des tableau de styles?
vous pouvez utiliser la méthode '' Array' indexOf' ou 'includes'. Vérifiez la compatibilité du navigateur pour 'includes' – Agalo
Je suis relativement nouveau à javascript, pouvez-vous élaborer où je placerais cette méthode afin de filtrer les résultats de' year.styles = year.styles.filter (style => { retour style.submodel.body === search; }); '? – Moshe
Je suggère, vous créez un nouveau tableau pour stocker le 'styles', puis vérifier l'existence de style dans le tableau créé. – Agalo