如何从普通对象创建特定对象以在 mongodb $set参数中使用

How to make a specific object from an ordinary object for use in a mongodb $set parameter

提问人:Game Visit Live 提问时间:6/1/2023 更新时间:6/1/2023 访问量:23

问:

如何在 JavaScript 中转换此对象:

let object = {
    a: {
        b: 12
        c: {
           d: 13
        }
    }
}

进入这个:

let object = {"a.b": 12, "a.c.d": 13}

我想在updateOne方法中修改对象并像mongodb中的$set参数一样使用它

JavaScript 节点.js MongoDB 对象

评论


答:

0赞 Andrew Parks 6/1/2023 #1

用于遍历每个 [key, value] 对,使用 ,并以递归方式获取对象树的叶子,从而构建数组中每个叶子的路径。找到叶子后,用于将路径数组转换为虚线路径字符串。 用于确保返回 [key, value] 对的平面数组,而不是嵌套数组。最后,我们用来将对列表变成一个数组。Object.entriesflatMappjoinflatMapObject.fromEntries

let data = {
  a: {
    b: 12,
    c: {
      d: 13
    }
  },
  e: {
    f: {
      g: 6
    }
  }
}

const f = (v, p=[]) => typeof v === 'object' ? 
  Object.entries(v).flatMap(([k, v]) => f(v, [...p, k])) : [[p.join('.'), v]]

console.log(Object.fromEntries(f(data)))