将2个数组转换为键值对象javascript

我有一个带有标题的数组 - 比如说["language", "name", "code"] 和一个值数组的数组 - 例如 [["English", "Matt", "2D"], ["Croatian", "Dana", "8S"], ["Russian", "Ivan", "2W"]]。


我正在尝试获取对象数组,如下所示:


  {language: English, name: Matt, code: 2D}, 

  {language: Croatian, name: Dana, code: 8S}, 

  {language: Russian, name: Ivan, code: 2W} 

]

没有嵌套for循环的任何优雅方法?


慕田峪4524236
浏览 118回答 3
3回答

慕斯王

let props=["language", "name", "code"];let data=[["English", "Matt", "2D"], ["Croatian", "Dana", "8S"], ["Russian", "Ivan", "2W"]];let result=data.map( (innerArray) =>{let obj={};innerArray.forEach( (innerData,index) =>{obj[props[index]]=innerData;});return obj;});console.log(result);

杨魅力

const props = ["language", "name", "code"];const values = [["English", "Matt", "2D"], ["Croatian", "Dana", "8S"], ["Russian", "Ivan", "2W"]];const formatted = values.map(value => ({  [props[0]]: value[0],  [props[1]]: value[1],  [props[2]]: value[2],}));或者像这样:const formatted4 = values.map(value => {  let v = {};  props.forEach((prop, i) => {    v = {      ...v,      [prop]: value[i]    }  });  return v;});

catspeake

您可以使用数组解构(假设您确定数据格式保持不变):const newArr = [];for(const [language, name, code] of yourDataArray){  //do whatever you want with the variables language, name, code  newArr.push({    language: language,    name: name,    code: code  })}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript