首页 > 解决方案 > 如何读取/理解 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 部分:值对。

谢谢你

标签: javascriptreactjs

解决方案


我假设您了解三元运算符是什么。如果不看看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;

不确定它是否能解决你的问题。希望能帮助到你。


推荐阅读