当前位置: 首页 > 知识库问答 >
问题:

如何在一行中有条件地创建对象属性?[重复]

通煜祺
2023-03-14

我想有条件地在对象上创建一个属性。这个想法是确保属性不存在(所以不仅仅是null),如果它没有值。

我现在正在做的是:

// comes from users
req.query = {
  foo: true
}

// my object which will contains allowed properties IF EXISTS
const where = {}

if (req.query.foo) {
  where.foo = req.query.foo
}
if (req.query.bar) {
  where.bar = req.query.bar
}

console.log(where)

每一个不同的楼盘都重复这个真的很无聊...

有没有一行做的方法?

编辑:

我不想从请求查询中获取所有属性

共有3个答案

杜起运
2023-03-14

试试这个:

const elements = ["foo", "bar"];

elements.forEach(el => {
    if (req.query[el]) {
        where[el] = req.query[el];
    }
});
岳池暝
2023-03-14

你可以做:

const merged = {...where, ...req.query};
孟光耀
2023-03-14

如果存在值(或任何其他条件),则创建对象属性obj.foo

es6扩展运算符<代码>...做它该做的事情)

const value = 'bar'

const empty = undefined

const obj = {
  ...value && { foo: value }, // read ...(value && { foo: value }) parenthesis are not necessary
  ...empty && { empty },
  ...(100 > 0) && { condition: 'true' },
  ...(100 < 0) && { condition: 'false' },
}

console.log(obj)
 类似资料:
  • 我想有条件地向对象添加一个属性。目前我有这个: 问题是如果汽车。电池不存在我有电池:未定义。如果对象中不存在该属性,我宁愿不要该属性。我怎样才能做到这一点?

  • 我正在尝试执行以下操作以满足代码构建器的要求(具体来说是Sencha Cmd)。 这是我需要做的本质。关键因素是函数体必须以返回对象文字结束。由于生成器中的限制,我无法返回变量。那么,如果参数includeB为true,如何在下面的伪代码点添加属性“b”,但如果为false,则根本不添加属性。不允许ie b==未定义或b==null。 也许这是不可能的。 感谢阅读和考虑, 默里

  • 问题内容: 用Javascript将是: 但是Python中相同的语法会创建一个字典,那不是我想要的 问题答案: 有两种功能用途。

  • 问题内容: 我是Java的新手,并且开始使用Java 。我想做的是为学生创建一个。每个学生都有与其相关的不同属性()。我试图弄清楚如何使用此属性添加新的学生对象。这是我所拥有的: 问题答案: 您需要的是以下内容:

  • 问题内容: 我在学习基本的Java课程,但遇到一个问题:仅在将有效参数传递给构造函数后,才如何创建对象? 验证完成后,我应该做一个替代类并从那里调用构造函数吗? 还是应该/应该在类中使用静态方法进行验证? 在这种情况下,最佳做法是什么? 问题答案: 标准做法是验证构造函数中的参数。例如: 旁注:要验证参数不为null(这很常见),可以使用: 更新 答复您对社会保险号的特定评论。一种方法是向类添加方

  • 是否有一些基于条件设置属性的语法? 我希望将express设置为一个值或根本不设置(即,不应该有名为express的键),并且在定义后没有额外的语句。我知道我可以将其用作布尔值,但接收端正在使用一个检查,我想知道是否可以避免修改它。 编辑:似乎没有直接解决上述问题的方法。以下是建议: JSON。stringify(Chris Kessel,dystroy): 匿名函数(Paulpro): 一个额外