Javascript 如何从一个数组中获取代码并从另一个数组中查找值并返回新值

Javascript 如何从一个数组中获取代码并从另一个数组中查找值并返回新值,javascript,arrays,Javascript,Arrays,我有一个数据数组,它提供了一个代码——我从一个API调用中获取这个数据。使用此代码,我需要查找从另一个数组和API调用获得的值。 然后我需要返回这个新值。 我最初有一个switch语句,我对它进行了硬编码,但由于返回值会发生变化,因此它是不可伸缩的。我基本上是映射原始数组,然后在这个映射中,我需要循环另一个数组并返回新值 const data = [{name: "youtube", type: "v"},{name: "photo", type: "i"}] const codes

我有一个数据数组,它提供了一个代码——我从一个API调用中获取这个数据。使用此代码,我需要查找从另一个数组和API调用获得的值。
然后我需要返回这个新值。
我最初有一个switch语句,我对它进行了硬编码,但由于返回值会发生变化,因此它是不可伸缩的。我基本上是映射原始数组,然后在这个映射中,我需要循环另一个数组并返回新值

  const data = 
[{name: "youtube",  type: "v"},{name: "photo", type: "i"}]

const codes = [{code:"v", description:"video"},{code:"i", description:"image"}]
所以我需要这样做,但这不起作用,它只对一个值起作用

data.map((item, index) => {
  const newList = codes.reduce((pre, curr) => {
    if (curr.code === item.type) {
      return curr
    }
  })
  return { ...item, ...item.type = newList.description }
})
所以新阵列的预期结果是

[{name: "youtube",  type: "video"},{name: "photo", type: "image"}]

您可以使用
map

const data=[{name:“youtube”,键入:“v”},{name:“photo”,键入:“i”}]
常量代码=[{code:“v”,description:“video”},{code:“i”,description:“image”}]
const newData=data.map(项=>{
const code=code.find(b=>b.code==item.type);
返回{…项,类型:code.description}
})
console.log(newData)
在此处使用而不是
reduce

const data=[{name:“youtube”,键入:“v”},{name:“photo”,键入:“i”}];
常量代码=[{code:'v',description:'video'},{code:'i',description:'image'}];
//破坏类型(和所有其他属性)的数据上的“map”
const out=data.map(({type,…rest})=>{
//从中分解描述
//代码数组中的匹配对象
const{description}=codes.find(obj=>obj.code==type);
//返回新对象
返回{…rest,类型:description};
});

控制台。注销您也可以使用下面的代码来实现所需的结果

var data = [{name: "youtube",  type: "v"},{name: "photo", type: "i"}]

var codes = [{code:"v", description:"video"},{code:"i", 
description:"image"}]
/*Create a Map of the codes and what it means basically convert the codes 
array to a key,value map*/

var codeMap = {};

codes.map(item => {
 codeMap[item['code']] = item['description']
})

var finalResult = []

data.map(item => {
finalResult.push({name:item.name,type:codeMap[item.type]})
})
console.log(finalResult)