gpt4 book ai didi

javascript - 将对象键和值转换为对象数组

转载 作者:行者123 更新时间:2023-11-30 20:57:30 26 4
gpt4 key购买 nike

我有一个看起来像这样的对象:

const response = {
id1-field1: true,
id1-field2: 0,
id1-field3: 3,
id2-field1: false,
id2-field2: 1,
id2-field3: 0,
id3-field1: false,
id3-field2: 0,
id3-field3: 0,
}

我需要制作一个如下所示的数组:

const formatted = [
{id: "id1", field1: true, field2: 0, field3: 3},
{id: "id2", field1: false, field2: 1, field3: 0},
{id: "id3", field1: false, field2: 0, field3: 0},
]

实现此目标的最佳方法是什么?这是我目前所处的位置:

  1. 获取数组中对象的键
  2. 用连字符分隔对象键
  3. 使用原始键添加对象值

const response = {
"id1-field1": true,
"id1-field2": 0,
"id1-field3": 3,
"id2-field1": false,
"id2-field2": 1,
"id2-field3": 0,
"id3-field1": false,
"id3-field2": 0,
"id3-field3": 0,
}

const keys = Object.keys(response)

const split = keys.map(x => {
return ({"oldId": x, "id": x.split('-')[0], "key": x.split('-')[1]})
})

const splitWithValues = split.map( x => {
let o = x;
o.value = response[x.oldId]
return o
})

console.log(splitWithValues)

最佳答案

使用 Object#keys 获取 key , 和 reduce他们变成了Map .那么spread Map#values获取数组:

const response = {"id1-field1":true,"id1-field2":0,"id1-field3":3,"id2-field1":false,"id2-field2":1,"id2-field3":0,"id3-field1":false,"id3-field2":0,"id3-field3":0};

const result = [...Object.keys(response)
.reduce((m, key) => {
const [id, field] = key.split('-');

const item = m.get(id) || { id };

item[field] = response[key];

return m.set(id, item);
}, new Map()).values()];

console.log(result);

关于javascript - 将对象键和值转换为对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47501142/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com