【问题标题】:How to merge objects in JS only when they are defined?如何仅在定义对象时才在JS中合并对象?
【发布时间】:2019-02-06 12:39:12
【问题描述】:

我正在学习 JS,目前我需要 4 个对象来相互合并,但我必须确保在结果对象中我不会有“未定义”。

目前,我是这样实现的:

  let result = {};
  result = Object.assign(result, first);
  if (second) result = Object.assign(result, second);
  if (third) result = Object.assign(result, third);
  if (fourth) result = Object.assign(result, fourth);
  return result;

但是,我相信必须有一个更清洁的解决方案来完成这项任务。 有吗?

【问题讨论】:

  • 在结果对象中有一些undefined”是什么意思?只有一个属性可以是未定义的,结果总是一个对象。
  • 如何在开始时将所有内容设置为某个值。
  • 我因此而未定义:let result = {...first,second,third,fourth};
  • “我需要 4 个对象彼此”——动词似乎丢失了。你们需要彼此做什么?
  • 我的错,“合并”

标签: javascript merge javascript-objects


【解决方案1】:

Object.assign 忽略 undefined 参数值。您可以简化为

return Object.assign({}, first, second, third, fourth);

【讨论】:

  • 似乎忽略了所有 falsy 值
  • 好的,谢谢!这个带可变参数的很好。当我执行以下操作时,我有未定义的值: let result = {...first,second,third,fourth};
  • @dvelopp 如果您打算使用实验对象传播语法,则需要为{...first, ...second, ...third, ...fourth},否则它是创建名为second 的属性的简写(其值为@987654327 @变量,可以是一个对象,也可以是undefined)。
  • 我认为它应该是 {...first,...second,...third,...fourth} 也许这就是你得到未定义值的原因? Bergi 的解释速度更快
  • 太棒了!它解释了为什么我没有定义。我喜欢“...第一,...第二,...第三,...第四”的选项。与 Object.assign({}, first, second, third, Fourth) 有什么区别?
猜你喜欢
  • 1970-01-01
  • 2022-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多