javascript - 如何读取/理解 json 对象中的嵌套三元值
问题描述
我试图破译别人的代码,但无法理解这个 json 对象,每个键都有嵌套的三元值。请帮助我理解/阅读此代码:
问题:您如何阅读本文(if/else 的哪一部分被分配何时以及如何分配?)
let permissions = {
view: currentRole ? Array.isArray(currentRole.view) ?
currentRole.view.includes(title) : false : false,
create: currentRole ? Array.isArray(currentRole.create) ?
currentRole.create.includes(title) : false : false,
edit: currentRole ? Array.isArray(currentRole.edit) ?
currentRole.edit.includes(title) : false : false,
all: currentRole ? Array.isArray(currentRole.all) ?
currentRole.all.includes(title) : false : false,
}
这是 currentRole 的定义方式
const UserContext = createContext({
authenticated: false, profile: null
});
const [userState, setUserState] = useContext(UserContext);
const currentRole = userState.currentRole;
请帮助我了解如何读取 json 键的 if/else 部分:值对。
谢谢你
解决方案
我假设您了解三元运算符是什么。如果不看看https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator。
让我们分解权限部分。
let permissions = {
view: currentRole ? Array.isArray(currentRole.view) ?
currentRole.view.includes(title) : false : false,
create: currentRole ? Array.isArray(currentRole.create) ?
currentRole.create.includes(title) : false : false,
edit: currentRole ? Array.isArray(currentRole.edit) ?
currentRole.edit.includes(title) : false : false,
all: currentRole ? Array.isArray(currentRole.all) ?
currentRole.all.includes(title) : false : false,
}
并专注于
const view = currentRole ? Array.isArray(currentRole.view) ?
currentRole.view.includes(title) : false : false;
我们可以把它想象成
const view = currentRole ? Array.isArray(currentRole.view) ?
(currentRole.view.includes(title) : false : false);
即如果currentRole
评估为真,那么
const view = Array.isArray(currentRole.view);
否则,
const view = currentRole.view.includes(title) : false : false;
不确定它是否能解决你的问题。希望能帮助到你。
推荐阅读
- reactjs - 在 React 端模拟电子东西
- c# - 过滤列表视图 c# wpf
- python - 减去特定的日期时间对象
- android - 将对象缓存到android中的文件(kotlin)
- php - 在 Wordpress 中集成 REST API
- arrays - WHERE IN 作为 Postgres 中的子查询
- r - 如何从闪亮应用程序中的 ggplot 中删除 NA 值?
- c++ - 如何将 wstringstream 和 getline 与 wchar_t 一起使用?
- android - Android Studio Build 后生成的代码保留在 build 文件夹中
- asp.net - IIS 上的自定义静态文件