将包含数据的对象转换为包含键和值列表的对象-javascript
我正在努力将数据序列化到一个新的结构中,希望能找到更好的解决方案 我有来自此结构中API的数据:将包含数据的对象转换为包含键和值列表的对象-javascript,javascript,reactjs,data-structures,Javascript,Reactjs,Data Structures,我正在努力将数据序列化到一个新的结构中,希望能找到更好的解决方案 我有来自此结构中API的数据: const filters = { category: ['Football', 'Soccer'], subcategory: ['Tactic', 'Frighting'], action: ['Kicking', 'Shooting'] }; const options = { category: [ { value: 'Foot
const filters = {
category: ['Football', 'Soccer'],
subcategory: ['Tactic', 'Frighting'],
action: ['Kicking', 'Shooting']
};
const options = {
category: [
{
value: 'Football',
label: 'Football'
},
{
value: 'Soccer',
label: 'Soccer'
}
],
subCategory: [
{
value: 'Tactic',
label: 'Tactic'
},
{
value: 'Frighting',
label: 'Frighting'
}
],
action: [
{
value: 'Kicking',
label: 'Kicking'
},
{
value: 'Shooting',
label: 'Shooting'
}
]
};
我想把它转换成这个结构:
const filters = {
category: ['Football', 'Soccer'],
subcategory: ['Tactic', 'Frighting'],
action: ['Kicking', 'Shooting']
};
const options = {
category: [
{
value: 'Football',
label: 'Football'
},
{
value: 'Soccer',
label: 'Soccer'
}
],
subCategory: [
{
value: 'Tactic',
label: 'Tactic'
},
{
value: 'Frighting',
label: 'Frighting'
}
],
action: [
{
value: 'Kicking',
label: 'Kicking'
},
{
value: 'Shooting',
label: 'Shooting'
}
]
};
谢谢你的帮助!谢谢。你可以这样做:
let options = Object.keys(filters).map(key => {
return {
[key]: filters[key].map(filter => {
return {
value: filter,
label: filter
}
})
}
})
常数过滤器={
类别:[“足球”、“足球”],
子类别:[“战术”,“恐怖”],
动作:[“踢”、“射”]
}
let options=Object.keysfilters.mapkey=>{
返回{
[键]:过滤器[键]。映射过滤器=>{
返回{
值:过滤器,
标签:过滤器
}
}
}
}
console.logoptions您可以这样做:
let options = Object.keys(filters).map(key => {
return {
[key]: filters[key].map(filter => {
return {
value: filter,
label: filter
}
})
}
})
常数过滤器={
类别:[“足球”、“足球”],
子类别:[“战术”,“恐怖”],
动作:[“踢”、“射”]
}
let options=Object.keysfilters.mapkey=>{
返回{
[键]:过滤器[键]。映射过滤器=>{
返回{
值:过滤器,
标签:过滤器
}
}
}
}
console.logoptions使用reduce和map可以在对象上循环并转换它 常数过滤器={ 类别:[“足球”、“足球”], 子类别:[“战术”,“恐怖”], 动作:[“踢”、“射”] }; 常量键转换={ 子类别:“子类别” } 常量结果=Object.entriesfilters.reduceobj,[key,arr]=>{ const mappedKey=keyConversion[key]| | key; obj[mappedKey]=arr.mapval=>{name:val,value:val}; 返回obj; }, {};
console.logresult 使用reduce和map可以在对象上循环并变换它 常数过滤器={ 类别:[“足球”、“足球”], 子类别:[“战术”,“恐怖”], 动作:[“踢”、“射”] }; 常量键转换={ 子类别:“子类别” } 常量结果=Object.entriesfilters.reduceobj,[key,arr]=>{ const mappedKey=keyConversion[key]| | key; obj[mappedKey]=arr.mapval=>{name:val,value:val}; 返回obj; }, {}; console.logresult 用于..在对象和.map数组帮助器上迭代 常数过滤器={ 类别:[“足球”、“足球”], 子类别:[“战术”,“恐怖”], 动作:[“踢”、“射”] }; 常量结果={} 用于输入过滤器{ 结果[key]=过滤器[key].mapv=>{value:v,label:v} } console.logresult用于..在对象和.map数组帮助器上迭代 常数过滤器={ 类别:[“足球”、“足球”], 子类别:[“战术”,“恐怖”], 动作:[“踢”、“射”] }; 常量结果={} 用于输入过滤器{ 结果[key]=过滤器[key].mapv=>{value:v,label:v} }
console.logresult您可以将对象的entires映射到新的[key,value]条目,其中的值是数组的映射版本。一旦有了新的[key,value]对数组,就可以用来构建生成的对象: 常量过滤器={类别:['足球','足球'],子类别:['战术','恐怖'],动作:['踢','射击']; 常量res=Object.fromEntriesObject.entriesfilters.map [k,arr]=>[k,arr.mapv=>{value:v,label:v}] ;
console.logres 您可以将对象的entires映射到新的[key,value]条目,其中的值是数组的映射版本。一旦有了新的[key,value]对数组,就可以用来构建生成的对象: 常量过滤器={类别:['足球','足球'],子类别:['战术','恐怖'],动作:['踢','射击']; 常量res=Object.fromEntriesObject.entriesfilters.map [k,arr]=>[k,arr.mapv=>{value:v,label:v}] ;
console.logres 谢谢大家,我终于用上了这种方式:
const { ...sportFilters } = queryData;
const filterKeys = keys(sportFilters);
const filterOptions = reduce(
filterKeys,
(acc, key) => {
return {
...acc,
[key]: map(sportFilters[key], value => ({
value,
label: value
}))
};
},
{}
);
谢谢大家,我终于用上了这种方式:
const { ...sportFilters } = queryData;
const filterKeys = keys(sportFilters);
const filterOptions = reduce(
filterKeys,
(acc, key) => {
return {
...acc,
[key]: map(sportFilters[key], value => ({
value,
label: value
}))
};
},
{}
);
你想让子类别成为子类别?你想让子类别成为子类别?嗨,如果我有这样的新结构:体育:{category:[{value:'Football',label:'Football},{value:'Soccer',label:'Soccer}],子类别:[{value:'tractic',label:'tractic'},{value:'Frighting',label:'Frighting'}],action:[{value:'Kicking',label:'Kicking'},{value:'Shooting',label:'Shooting'};--如果不将子类别更改为子类别,并且在HI上面有一个顶层,那么如果我有这样的新结构:体育:{category:[{value:'Football',label:'Football'},{value:'Soccer',label:'Soccer'}],子类别:[{value:'tractic',label:'tractic'},{value:'Frighting',label:'Frighting'}],action:[{value:'Kicking',label:'Kicking'},{value:'Shooting',label:'Shooting'}]};--如果不将子类别更改为子类别,并且在HI上面有一个顶层,那么如果我有这样的新结构:sports:{category:[{value:'Football'
,标签:'Football'},{value:'Soccer',标签:'Soccer'}],子类别:[{value:'tractic',标签:'tractic'},{value:'Frighting',标签:'Frighting'}],动作:[{value:'Kicking',标签:'Kicking'},{value:'Shooting',标签:'Shooting'};--在不将子类别更改为子类别且上面有一个顶层的情况下–请使用缩进的json更新您的问题,并提供更多详细信息。如果我有这样的新结构:体育:{category:[{value:'Football',label:'Football'},{value:'Soccer',label:'Soccer'}],子类别:[{value:'tractic',label:'tractic'},{value:'Frighting',label:'Frighting'}],action:[{value:'Kicking',label:'Kicking'},{value:'Shooting',label:'Shooting'}]};--在不将子类别更改为子类别且上面有一个顶层的情况下–请使用缩进的json更新您的问题,并提供更多详细信息。如果我有这样的新结构:体育:{category:[{value:'Football',label:'Football'},{value:'Soccer',label:'Soccer'}],子类别:[{value:'tractic',label:'tractic'},{value:'Frighting',label:'Frighting'}],action:[{value:'Kicking',label:'Kicking'},{value:'Shooting',label:'Shooting'}]};--如果不将子类别更改为子类别,并且上面有一个顶层–嗨,如果我有这样的新结构:体育:{category:[{value:'Football',label:'Football'},{value:'Soccer',label:'Soccer'}],子类别:[{value:'tractic',label:'tractic'},{value:'Frighting',label:'Frighting'}],action:[{value:'Kicking',label:'Kicking'},{value:'Shooting',label:'Shooting'}]};--如果不将子类别更改为子类别,并且上面有一个顶层–嗨,如果我有这样的新结构:体育:{category:[{value:'Football',label:'Football'},{value:'Soccer',label:'Soccer'}],子类别:[{value:'tractic',label:'tractic'},{value:'Frighting',label:'Frighting'}],action:[{value:'Kicking',label:'Kicking'},{value:'Shooting',label:'Shooting'}]};--如果不将子类别更改为子类别,并且上面有一个顶层–嗨,如果我有这样的新结构:体育:{category:[{value:'Football',label:'Football'},{value:'Soccer',label:'Soccer'}],子类别:[{value:'tractic',label:'tractic'},{value:'Frighting',label:'Frighting'}],action:[{value:'Kicking',label:'Kicking'},{value:'Shooting',label:'Shooting'}]};--在不将子类别更改为子类别的情况下,并在其上有一个顶层——