【问题标题】:How to merge two Object of Object in JavaScript (NodeJS) [closed]如何在 JavaScript (NodeJS) 中合并两个 Object of Object [关闭]
【发布时间】:2023-01-27 17:06:08
【问题描述】:

我有多个对象:

const = obj1: {
    db: {
        url: "mongodb://localhost:27017"
    }
}

const = obj2: {
    db: {
        user: "admin"
    }
}

const = obj3: {
    token: {
        auth: {
            secret: "*****"
        }
    }
}

如何合并成这样的单个对象:

{
    db: {
        url: "mongodb://localhost:27017",
        user: "admin"
    },
    token: {
        auth: {
            secret: "*****"
        }
    }
}

我只是尝试了这样的事情:Object.assign(obj1, obj2) 但不是我想要的

谢谢

【问题讨论】:

  • 这不是有效的 javascript。
  • 你给我们的三个对象是无效的(例如=在错误的地方签名等),你也没有显示passexpire来自哪里。无论如何,这只是基本的对象组合,例如使用给定值中的一些值创建一个新对象。

标签: javascript json object


【解决方案1】:

我建议更正无效的对象,如 cmets 中指出的那样。除此之外,以下函数适用于任意数量的对象。

const obj1 = {
  db: {
    url: "mongodb://localhost:27017",
  },
};

const obj2 = {
  db: {
    user: "admin",
  },
};

const obj3 = {
  token: {
    auth: {
      secret: "*****",
    },
  },
};

function merge() {
  const result = {};

  for (let i = 0; i < arguments.length; i++) {
    const obj = arguments[i];

    for (const key in obj) {
      if (obj.hasOwnProperty(key)) {
        if (typeof obj[key] === "object") {
          result[key] = merge(result[key], obj[key]);
        } else {
          result[key] = obj[key];
        }
      }
    }
  }

  return result;
}

const merged = merge(obj1, obj2, obj3);
console.log(merged);

【讨论】:

  • 谢谢,解决了我的大问题
猜你喜欢
  • 2022-12-01
  • 1970-01-01
  • 2021-03-30
  • 1970-01-01
  • 2014-07-21
  • 2020-10-29
  • 1970-01-01
  • 2011-10-21
  • 1970-01-01
相关资源
最近更新 更多