ニール・マートン:
私は、次のオブジェクト作らアップJavaScriptの配列を持っています:
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'
}
]
私も表示されるように利用可能であるウィジェットのコレクションに基づいてオブジェクトの次の配列を持っています:
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'
}
]
私は何をしたいのですが、オブジェクトの配列を減少させることにあるwidgets
オブジェクトの新しい配列へfilteredWidgets
の値に基づいてpermissions
オブジェクトの配列、これらいるかどうかmoduleId
発見され、また、どこmoduleEnabled
ですtrue
。
私は以下のコードを試してみたが、それは働いていません。
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)
すべてのヘルプは大歓迎されます。前もって感謝します。
編集:予想される出力が含まれています。
const filteredWidgets = [
{
id: 1,
moduleId: 2,
title: 'Your time off'
},
{
id: 2,
moduleId: 1,
title: 'Your colleagues'
}
]
マイク・Dサットン:
あなたのフィルタ機能では、与えられた基準に一致するすべての許可をチェックします。
const filteredWidgets = widgets.filter(widget =>
permissions.find(permission =>
(permission.moduleId === widget.moduleId) && permission.moduleEnabled));