Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将包含数据的对象转换为包含键和值列表的对象-javascript_Javascript_Reactjs_Data Structures - Fatal编程技术网

将包含数据的对象转换为包含键和值列表的对象-javascript

将包含数据的对象转换为包含键和值列表的对象-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

我正在努力将数据序列化到一个新的结构中,希望能找到更好的解决方案

我有来自此结构中API的数据:

  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'}]};--在不将子类别更改为子类别的情况下,并在其上有一个顶层——