json 如何在JavaScript中合并两个对象的对象(NodeJS)[已关闭]

utugiqy6  于 2023-01-27  发布在  Java
关注(0)|答案(1)|浏览(135)

21小时前关门了。
Improve this question
我有多个对象:

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)但不是我想要的
谢谢

wnrlj8wa

wnrlj8wa1#

我建议修正那些无效的对象,就像在评论中指出的那样。除此之外,下面的函数可以为你想要的任意多的对象工作。

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);

相关问题