【问题标题】:Append an object without merging追加对象而不合并
【发布时间】:2022-01-07 20:31:50
【问题描述】:

我环顾四周,但没有完全找到我要找的东西: 我想在不合并的情况下附加到子对象值。

EG:

const ADDRESS = {
  address1: {
    line1: 'blah 1'
    // ...
  },
  address2: {
    line1: 'blah 2'
    // ...
  },
  address3: {
    line1: 'blah3'
    // ...
  },
  address4: {
    line1: 'blah3'
    // ...
  }
}

如果我使用扩展运算符,它们会被合并,我只想将它们附加

const addressesappended = {
  ...ADDRESS.address1,
  ...ADDRESS.address2
}

期望的结果:

{
  address1: {
    line1: 'blah 1'
    // ...
  },
  address2: {
    line1: 'blah 2'
    // ...
  }
}

【问题讨论】:

  • 想要的结果不是一个有效的对象。
  • 源和目标的区别在哪里?

标签: javascript json object


【解决方案1】:

您只能获取值。

const
    ADDRESS = { address1: { line1: 'blah 1' }, address2: { line1: 'blah 2' }, address3: { line1: 'blah3' }, address4: { line1: 'blah3' } };
    result = Object.values(ADDRESS);

console.log(result);

【讨论】:

    【解决方案2】:

    您可以使用克隆整个对象

    const result = Object.assign({}, ADDRESS);
    

    如果匹配“地址”,您可以手动分配子对象

    let result = {};
    for (const [key, value] of Object.entries(ADDRESS)) {
        if(key.includes("address")) result[key] = value;
    }
    

    【讨论】:

      【解决方案3】:

      您需要在目标对象中声明相关传播数据的键。

      const addresses = {
        address1: { line1: 'blah 1' },
        address2: { line1: 'blah 2' },
        address3: { line1: 'blah3' },
        address4: { line1: 'blah3' }
      };
      
      const addressesAppended = {
        address1: { ...addresses.address1 },
        address2: { ...addresses.address2 }
      };
      
      console.log(addressesAppended);
      .as-console-wrapper { top: 0; max-height: 100% !important; }

      【讨论】:

      • 谢谢,这是我一直在寻找的解决方案 :) 感谢您的所有贡献
      猜你喜欢
      • 2014-08-29
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      • 2021-09-20
      • 2014-03-10
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多