如何将对象中的键值对转换为对象数组?

时间:2019-09-02 11:12:15

标签: javascript

我有一些代码可以输出带有键值对的对象。像这样:

{"a" : "1", "b" : "2", "c" : "3"}

我想改为将输出更改为此:

[{"a" : "1"}, {"b" : "2"}, {"c" : "3"}]

我一直在搞怪Object.entries(),Object.assign()和Array.map()。我现在已经花了很多时间,所以我认为是时候寻求帮助了。

初始数据来自req.query,然后我将其转换为:

{a: "1", b: "2", c: "3"} 

进入

{"x.a": "1", "x.b": "2", "x.c": "3"}

这最终将成为mongoDB查询。

以下是我到目前为止所拥有的。

let obj = Object.entries(req.query);
obj = obj.map(([key, val]) => ["x."+ key, val]);
let newobj = Object.assign(...obj.map(([k, v]) => ({ [k]: v })));

给出:

{"x.a": "1", "x.b": "2", "x.c": "3"}

所以,按照我最初的问题。如何将其转换为:

[{"x.a" : "1"}, {"x.b" : "2"}, {"x.c" : "3"}]

1 个答案:

答案 0 :(得分:2)

您可以使用Object.entriesmap

let obj = {
  "a": "1",
  "b": "2",
  "c": "3"
}

let final = Object.entries(obj).map(([k, v]) => ({
  [`x.${k}`]: v
}))

console.log(final)

如果您只想使用密钥而不是x.a,则可以简单地使用

 [k] : v