gpt4 book ai didi

javascript - 在 Javascript 中转换对象格式

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

我有一个输入对象数组,每个对象都具有以下格式:

{
titleID: string,
titleName: string,
1af23_red: number,
45ua6_blue: number
}

我知道的是:

  1. 在每个对象中,总是titleIDtitleName 然后我会有几个键具有格式number_string

  2. titleIDtitleName 值在不同的对象之间会有所不同

  3. 其余键(1af23_red、45ua6_blue 等)在所有对象中都相同,并且它们都具有相同的格式“id_name” 因此,如果第一个对象将 1af23_red 和 45ua6_blue 作为键,所有其余的也将只有这些 key 。

我想要返回的数组类型具有以下格式:

{
color: {
id
name
},
data: Array<
{
title: {
id
name
},
rating
}
>
}

因此,输入示例:

[ 
{
titleId: 'a',
titleName: 'atitle',
'1af_red': 50
'ba2_blue': 40
},
{
titleId: 'b',
titleName: 'btitle',
'1af_red': 30
'ba2_blue': null
},
{
titleId: 'c',
titleName: 'ctitle',
'1af_red': null
'ba2_blue': 10
}
]

我希望得到返回:

[
{
color: {
id: '1af',
name: 'red'
},
data: [
{
title: {
id: 'a',
name: 'atitle',
},
rating: 50
},
{
title: {
id: 'b',
name: 'btitle',
},
rating: 30
},
{
title: {
id: 'c',
name: 'ctitle',
},
rating: null
}
]
},
{
color: {
id: 'ba2',
name: 'blue'
},
data: [
{
title: {
id: 'a',
name: 'atitle',
},
rating: 40
},
{
title: {
id: 'b',
name: 'btitle',
},
rating: null
},
{
title: {
id: 'c',
name: 'ctitle',
},
rating: 10
}
]
}
]

我尝试过使用 map 和 reduce 进行这种转换,但我被卡住了。有没有一种简单的方法可以做到这一点?

最佳答案

给你。

简要逻辑:从数据数组的第 0 个索引处获取对象的所有键。遍历键,如果键包含'_',选择键,将其分解以形成 id 和 name 对,然后映射所有数据对象,获取该键的分数并将其附加到具有 id 和 name 值的对象.最后将此对象附加到结果数组。对所有包含“_”的键执行此操作。

const data = [ 
{
titleId: 'a',
titleName: 'atitle',
'1af_red': 50,
'ba2_blue': 40
},
{
titleId: 'b',
titleName: 'btitle',
'1af_red': 30,
'ba2_blue': null
},
{
titleId: 'c',
titleName: 'ctitle',
'1af_red': null,
'ba2_blue': 10
}
];
const keys = Object.keys(data[0]);
const result = []
keys.map(key=> {
if(key.indexOf('_')!==-1){
const item = {}
const keyData = key.split('_')
item.color = {
id : keyData[0],
name : keyData[1]
}
item.data = []
data.map(obj => {
const newObj = {}
newObj.title = {
id : obj.titleId,
name : obj.titleName
}
newObj.rating = obj[key];
item.data.push(newObj);
});
result.push(item);
}
});
console.log(result);

关于javascript - 在 Javascript 中转换对象格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54709262/

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