【问题标题】:Coffeescript: Is it possible to conditionally declare property without always creating a key?Coffeescript:是否可以有条件地声明属性而不总是创建密钥?
【发布时间】:2016-07-25 16:05:32
【问题描述】:

假设我想创建一个对象,其中一些成员并不总是存在

t = {a: 1, b: b if b}
console.log t       # { a: 1, b: undefined }

我正在尝试在缺少 b 时实现此结果

t = {a: 1}
if b then t.b = b
console.log t       # { a: 1 }

有没有一种方法可以有条件地声明 b 而无需创建密钥,也无需单独的代码行?

【问题讨论】:

  • 什么意思?你在评估什么条件?需要一个更清晰的示例...'if false' 显然总是为 false...当使用访问运算符 ./[]
  • “没有单独的代码行” - 为什么?那行代码伤害了你吗?
  • @Tomalak 只是想看看有没有我不知道的咖啡脚本技巧
  • 我建议您阅读 CoffeeScript 文档。你有吗?
  • 不可能。我会选择if b then t = {a: 1, b: b} else t = {a: 1}

标签: node.js coffeescript


【解决方案1】:

当你需要在一个大物体上重复做时,你可以做

t = Object.fromEntries(Object.entries(
  a: 1
  b: b
  c: 2
).filter(e=>e[1]))

如果b 是假的,这将过滤掉b 属性。

【讨论】:

    猜你喜欢
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多