Javascript 如何在react中过滤和合并这两个数组

Javascript 如何在react中过滤和合并这两个数组,javascript,typescript,Javascript,Typescript,我有一个数据数据,房间和老师 data = [{ id: null, name: 'edward', room: 'emerald' }] room = [{ id: 1, name: 'emerald' },{ id: 2, name: 'diamond' }] teacher = [{ id: 1, name: 'james' },{ id: 2, name: 'edward' }] 我想要的是将id的数据值更改为teacherid,然后房间值更改为房间id。就像

我有一个数据
数据
房间
老师

data = [{
 id: null,
 name: 'edward',
 room: 'emerald'
}]

room = [{
 id: 1,
 name: 'emerald'
},{
 id: 2,
 name: 'diamond'
}]

teacher = [{
 id: 1,
 name: 'james'
},{
 id: 2,
 name: 'edward'
}]
我想要的是将
id的
数据
值更改为teacher
id
,然后房间值更改为
房间id
。就像这样

data = [{
 id: 2,
 room: 1
}]
我所做的是对平面图和过滤器,但它没有显示任何东西

data.flatMap(x =>room.filter(room => room.code === x).map(y => { return { id: null, room: y.id } }));
我要做的是创建
room
teacher
条目的索引,并按它们的名称进行索引

然后您可以映射
数据
数组以查找相关ID

const data=[{id:null,名称:'edward',房间:'emerald'}]
const room=[{id:1,名称:'emerald'},{id:2,名称:'diamond'}]
常量教师=[{id:1,姓名:'james'},{id:2,姓名:'edward'}]
//创建包含由给定属性设置关键帧的条目的映射
const indexByProp=(arr,prop=“name”)=>
arr.reduce((映射,条目)=>map.set(条目[prop],条目),新映射())
const roomsByName=indexByProp(房间)
const teachersByName=indexByProp(教师)
const newData=data.map(d=>({
id:teachersByName.get(d.name)?.id,//使用可选链接
room:roomsByName.get(d.room)?.id//以防查找失败
}))

console.log(newData)
我会这样做:

const nameId = [...room, ...teacher].find(el => el.name === data[0].name).id;
const roomId = [...room, ...teacher].find(el => el.name === data[0].room).id;

const dat = [{id: nameId, room: roomId}]

console.log(dat);
如果初始数据数组中的条目数较大,我将编写一个函数返回
nameId
roomId
以及其他
id

详情如下:

function finder(idToFind){
  return [...room, ...teacher].find(el => el.name === data[0][idToFind]).id;
}

const dat = [{id: finder('name'), room: finder('room')}];

console.log(dat);
“它没有显示任何内容”。。。您所有的代码都没有显示任何内容。为此,您需要类似于
console.log()
document.write()
,等等的东西