【问题标题】:Problem assign optional value es6 coalescing问题分配可选值es6合并
【发布时间】:2019-03-18 13:24:05
【问题描述】:

如何在未定义的案例对象属性值中分配可选值。

类似的东西。

const { someField } = { y: "Hello" } || { someField: "hello!"}

【问题讨论】:

  • 你能说得更具体点吗?你的意思是default valuesconst { someField = 'hello!' } = { y: "Hello" } 一样吗?
  • 这里应该未定义什么值?你不做任何比较?
  • 我需要那个:console.log(someField); // 你好!
  • 您的问题不清楚。正如它所写的那样,每次都会返回{ y: "Hello" },因为它是一个truthy 值。这是你想要做的:const { someField = "hello" } = { y: "Hello" }
  • 对我来说正确答案是: const { someField } = Object.assign({someField: "Hello"}, { y: 'Hola' }); console.log(someField) // "你好"

标签: javascript ecmascript-6 constants


【解决方案1】:

您可以使用destructuring assignments default values。在这种情况下,由于您希望默认值是 { someField: "hello!"} 中的值,您可以通过将其作为对象引用来将其分配为默认值。

请看下面的例子:

const obj = { someField: "hello!"};
const {someField = obj['someField']} = { y: "Hello" };
console.log(someField); // hello!

【讨论】:

    【解决方案2】:

    也可以使用Object.assign先合并不同的对象,最右边的对象会覆盖左边的对象,然后使用解构从合并的对象中提取属性:

    const defaultValues = { y: 'Hello', someField: 'hello!' };
    const { someField, y } = Object.assign(defaultValues, { someField: 'bye!' });
    
    console.log(y, someField);

    【讨论】:

      【解决方案3】:

      尝试使用这个函数来检查 null 或未定义的给定值

      function checkNullOrUndefined(value){
          if(value ==null || value===''  || value== "undefined" || value === undefined) 
              return false;
          return true;
      }
      
      var a = {};
      const b = checkNullOrUndefined(a) ? true : false
      

      【讨论】:

        【解决方案4】:

        两种可能的方式最终对我有用:

        第一个: const { someField } = Object.assign({someField: "Hello"}, { y: 'Hola' });

        这个更好 常量 { someField } = {someField: { y: "bla bla" } || {someField: "你好"} }

        【讨论】:

          猜你喜欢
          • 2018-10-23
          • 1970-01-01
          • 1970-01-01
          • 2017-02-26
          • 2019-12-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多