Filtrer un tableau JavaScript de l'objet un autre tableau d'objets JavaScript

Neil Merton:

Je les éléments suivants maquillé tableau JavaScript d'objets:

const permissions = [
  {
    moduleEnabled: true,
    moduleId: 1,
    moduleName: 'Directory'
  },
  {
    moduleEnabled: true,
    moduleId: 2,
    moduleName: 'Time off'
  },
  {
    moduleEnabled: false,
    moduleId: 3,
    moduleName: 'Tasks'
  },
  {
    moduleEnabled: false,
    moduleId: 4,
    moduleName: 'Documents'
  }
]

J'ai aussi le tableau suivant d'objets à partir d'une collection de widgets disponibles à afficher:

const widgets = [
  {
    id: 1,
    moduleId: 2,
    title: 'Your time off'
  },
  {
    id: 2,
    moduleId: 1,
    title: 'Your colleagues'
  },
  {
    id: 3,
    moduleId: 3,
    title: 'Your tasks'
  },
  {
    id: 4,
    moduleId: 5,
    title: 'Your sales pipeline'
  },
  {
    id: 5,
    moduleId: 4,
    title: 'Your documents'
  },
  {
    id: 6,
    moduleId: 6,
    title: 'Your legal cases'
  }
]

Ce que je voudrais faire est de réduire le tableau d'objets widgetsà un nouveau tableau d'objets filteredWidgetssur la base des valeurs du permissionstableau d'objets, ceux - ci étant si l' moduleIdon trouve, et aussi où moduleEnabledest true.

J'ai essayé le code ci-dessous, mais il ne fonctionne pas:

const filteredWidgets = []
for (const permission in permissions) {
  const found = widgets.filter((item) => item.moduleId === permission.moduleId && permission.moduleEnabled)
  if (found) {
    filteredWidgets.push(found)
  }
}
console.log('filteredWidgets\n', filteredWidgets)

Toute aide sera fortement appréciée. Merci d'avance.

Edit: inclure le résultat attendu:

const filteredWidgets = [
  {
    id: 1,
    moduleId: 2,
    title: 'Your time off'
  },
  {
    id: 2,
    moduleId: 1,
    title: 'Your colleagues'
  }
]
Mike D Sutton:

Dans votre fonction de filtre, vérifiez toute autorisation qui correspond aux critères:

const filteredWidgets = widgets.filter(widget =>
    permissions.find(permission =>
        (permission.moduleId === widget.moduleId) && permission.moduleEnabled));

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=303377&siteId=1
conseillé
Classement