【问题标题】:how to write condition using ternary operator in javascript Es6? [closed]如何在javascript Es6中使用三元运算符编写条件? [关闭]
【发布时间】:2021-02-21 03:21:18
【问题描述】:

我在 react mapStatetoprops 函数中写了一个三元条件,同时返回我想写一些条件来完全填充返回数据的对象

const mapStateToProps = (state) => {
 const { module: { module1, module4: { submodule } } } = state;
 const newObj = { module1, module4Submodule: submodule };
 return{
   testmodule: newobj
  }
 }

newobj 返回

{
"module1": {
"foo": 1,
"bar": 2,
"anotherfoo": 5
},
"module4Submodule": {
"foo": 9,
"bar": 0,
"anotherfoo": 1
}
}

testmodule中要写入的条件是

如果 state.manage.module 包含“module1”或“module4Submodule”(需要检查 长度,空,未定义的模块1和模块4子模块的值)然后返回 "newobj" 否则返回 "somevalue"

这也是在return语句中写入条件或在此之前写入条件并返回值的好方法

【问题讨论】:

  • 如果您不方便编写条件表达式,请使用 if 语句。
  • @Bergi 只是想试试三元运算符,我可以用 if 和 else 条件,努力学习
  • 那么请用if/else 发布工作代码,以便我们知道要转换什么代码。
  • obj 来自哪里?应该是state 吗?正如@Bergi 所说,用if / else 编写它,然后用? : 替换(但是我相信可读性是关键,代码不一定是单行代码,那是为了丑化)(再次取决于场景)
  • @Icepickle 我已经编辑了代码,是的,它来自状态

标签: javascript reactjs ecmascript-6


【解决方案1】:

你说你需要这样的东西

如果 state.manage.module 包含“module1”或“module4Submodule”(需要 检查 module1 的长度、空值、未定义值和 module4Submodule) 然后返回 "newobj" 否则返回 "somevalue"

看看下面的代码。

但我必须强调,在这种情况下,最好使用“经典”if/else 语句,因为它是一个复杂的条件,您或其他人很难“阅读”。

const newObj = {
  "module1": {
    "foo": 1,
    "bar": 2,
    "anotherfoo": 5
  },
  "module4Submodule": {
    "foo": 9,
    "bar": 0,
    "anotherfoo": 1
  }
}
const returnResult = (Object.keys(newObj).includes('module1') && Object.keys(newObj.module1) && Object.keys(newObj.module1).length > 0) || (Object.keys(newObj).includes('module4Submodule') && Object.keys(newObj.module4Submodule) && Object.keys(newObj.module4Submodule).length > 0) ? newObj : 'someValue'

console.log(returnResult)

【讨论】:

    猜你喜欢
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 2013-10-30
    • 2015-02-15
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    相关资源
    最近更新 更多