Je saisis un identifiant d'autorisation et je tente de filtrer un objet qui possède ces autorisations. Ceci est une version concise de l'objet JSON
let len = this.props.permissions.length;
for (let i = 0; i < len; i++){
if (this.props.permissions[i].dependsOn[0] !== null){
// return this.props.permissions[i].id // Should return INS-SH-U
if (permissionId === this.props.permissions[i].dependsOn[0]){
// return this.props.permissions[i].id
console.log(this.props.permissions[i].id);
}
}
}
return null;
4 Réponses :
Vous pouvez utiliser filtre code> afin de filtrer votre tableau, puis utilisez la carte pour obtenir l'identifiant uniquement: const checkId = 'SOME ID'
const ids = yourData.filter(obj => obj['dependsOn'] !== null && obj['dependsOn'].includes(checkId)).map(obj => obj.id)
Merci pour cela! Vous êtes un économiseur de vie vrai.
Si je comprends bien correctement, vous auriez besoin de quelque chose comme le suivant
const ids = array.filter(obj => obj.dependsOn && obj.dependsOn.includes('INS-SH-V')).map(cur => cur.id);
obj.dependson code> est une matrice, pas une chaîne ... ils ne seront jamais égaux.
Vous pouvez utiliser p> filtre code> pour cela et enfin mapper code> le tableau car vous ne voulez que les identifiants.
J'ai ajouté un objet supplémentaire qui a plus d'un identifiant dans dependonon code> à titre d'exemple. const inputArr = [
{
"id": "INS-SH-V",
"name": "View Sharing Functionality",
"description": "Access to view Email and Schedule windows",
"group": "Sharing",
"scopeable": false,
"featureId": "INS-BE",
"scopeExclusions": null,
"dependsOn": null
},
{
"id": "INS-SH-U",
"name": "Manage Sharing Functionality",
"description": "Access to send emails and schedule jobs",
"group": "Sharing",
"scopeable": false,
"featureId": "INS-BE",
"scopeExclusions": null,
"dependsOn": [
"INS-SH-V"
]
},
{
"id": "INS-SH-asdsd",
"name": "View Sharing Functionality",
"description": "Access to view Email and Schedule windows",
"group": "Sharing",
"scopeable": false,
"featureId": "INS-BE",
"scopeExclusions": null,
"dependsOn": [
'INS-SH-V',
'INS-SH-A'
]
},
];
const idToCheck = 'INS-SH-V';
const result = inputArr.filter(obj => (obj.dependsOn?.includes(idToCheck) || false)).map(({ id }) => id);
console.log(result);
Voici une solution à l'aide d'une boucle pour boucle,
p>
let data = [{
"id": "INS-SH-V",
"name": "View Sharing Functionality",
"description": "Access to view Email and Schedule windows",
"group": "Sharing",
"scopeable": false,
"featureId": "INS-BE",
"scopeExclusions": null,
"dependsOn": null
},
{
"id": "INS-SH-U",
"name": "Manage Sharing Functionality",
"description": "Access to send emails and schedule jobs",
"group": "Sharing",
"scopeable": false,
"featureId": "INS-BE",
"scopeExclusions": null,
"dependsOn": [
"INS-SH-V"
]
}
]
const filteredData = data.filter(el => el.dependsOn && el.dependsOn.includes('INS-SH-V')).map(v => v.id)
console.log(filteredData)
S'il vous plaît montrer quelles recherches vous avez faites en résolvant cette vous-même et quelles tentatives que vous avez faites.
@Hereticmonkey Bonjour Désolé - j'ai ajouté ma tentative de la solution sur le dernier édition. Mais je vois qu'il y a une solution plus concise.