javascript - 根据对象本身内的 bool 值添加或避免在对象中添加属性

标签 javascript

基本上,我想知道如果变量为 false 但来自对象内部,是否可以避免将属性添加到对象中。假设我有这个对象:

var obj = { foo: 'bar', bar: 'foo' };

现在我想重写同一个对象,但我只想在新变量( bool 值)为 true 时添加第二个属性。 问题是我怎样才能做到这一点,例如使用这样的三元运算符:

var add = false;
var obj = {
  foo: 'bar',
  (add ? bar: 'foo': null)
};

我想避免的是这样的:

...
bar: ( add ? 'foo' : undefined )

因为我不想在 add == false 的情况下有条形索引。另外,赋值必须位于对象内部(这就是问题,如果可能的话),因为这样的东西不是我正在寻找的:

...
if (!add) delete obj.bar; // This would be after the creation of the whole object

解决方法

显然,这可以通过多种方式实现,但我还没有发现任何在对象本身内部完成的操作。我可以使用三元运算符并拥有两个像这样的对象:

var obj = add ? {
  foo: 'bar',
  bar: 'foo'
} : { foo: 'bar' };

但这会导致代码重复(当对象有更多属性时)。

编辑我想说,我的问题与重复问题略有不同,因为我的问题是指在对象内部执行此操作,而不是在其声明之后或任何其他内容中执行此操作t 之间 var obj = { ... } 有一个公认的答案,但如果有人知道不使用扩展运算符的任何其他方法,我会很高兴。谢谢大家

最佳答案

使用展开运算符的快速方法:

const condition = false;

const foo = {
  bar: 'baz',
  ...(condition ? {
    boz: 'bat'
  } : {})
};

console.log(foo);

这是有效的,因为对象文字的展开运算符对没有可枚举自身属性的对象没有任何作用。

关于javascript - 根据对象本身内的 bool 值添加或避免在对象中添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54150588/

相关文章:

javascript - 如何使用javascript删除div中的空格?

javascript - jQuery 检查和更改自定义 Google 电子表格页面上的输入和下拉列表

javascript - 如何选择 CSS Puppeteer/Node.js 中定义的图像名称?

javascript - 使用 javascript 将 html 文本渲染为位图,无需服务器端代码

javascript - 这个递归数组置换函数是如何工作的?

javascript - 如何在 Node js 中将 JSON 对象转换为 Excel 文件时将 Javascript 数组元素存储在 Excel 文件中?

.net - 在 .NET 中提交表单

javascript - 浏览器同步 Gulp 设置不适用于 .NET MVC

javascript - 如何在 dropzone.js 中设置上传按钮

php - 限制每秒/分钟发送联系表单电子邮件