我想要一个函数,它接受一系列操作,将其与用户操作列表进行比较,然后返回用户是否可以执行该操作。
基本上,给出:
const usersActions: { [key: string]: {[key: string]: boolean} } = {
Bob: { eat: false, drink: false, sleep: true, walk: true },
Alice: { eat: true, drink: true, sleep: true, walk: false }
};
如果 Bob 或 Alice 可以执行一组特定的函数,该函数就会返回。
enum Actions{
Eat= 'eat',
Drink= 'drink',
Sleep= 'sleep',
Walk= 'walk'
}
const verifyActions = (name: string, actions: Array<Actions>) => {
return actions.every((action) => {
return usersActions[name][action];
});
}
console.log(verifyActions('Bob', [Actions.Eat, Actions.Sleep])); // false
console.log(verifyActions('Bob', [Actions.Sleep, Actions.Walk])); // true
console.log(verifyActions('Alice', [Actions.Drink, Actions.Eat, Actions.Sleep])); // true
console.log(verifyActions('Alice', [Actions.Sleep, Actions.Walk])); // false
这完全按照我所描述的方式工作,但我忍不住认为有一种更好的方法可以做到这一点,例如比较数组与对象,也许是 Lodash 的单行代码?这让我的大脑有点困惑,并让我有一种挥之不去的感觉,认为还有更优雅的方法。
梦里花落0921
相关分类