Javascript 按数组数组中的id查找对象的索引

Javascript 按数组数组中的id查找对象的索引,javascript,arrays,json,reactjs,object,Javascript,Arrays,Json,Reactjs,Object,我有一排房子,里面有一排房间 每个房间、房子和街道都有一个唯一的ID(例如:如果房子1中的房间有ID 1..4,那么房子2中的房间将有ID 5..9) 对于: 1) 给定房间id,返回阵列房屋中房屋的索引,以及该房屋阵列房屋中房屋的索引 2) 给一个房间id,归还它所在的房子 3) 给定房间id,返回房间id 7的房间对象: (一) (二) (三) 1) findIndex()是一个简单的解决方案,但您需要再次使用数组函数来扫描房屋检查回调中的房间: var houseIndex = stree

我有一排房子,里面有一排房间

每个房间、房子和街道都有一个唯一的ID(例如:如果房子1中的房间有ID 1..4,那么房子2中的房间将有ID 5..9)

对于:
1) 给定房间id,返回阵列房屋中房屋的索引,以及该房屋阵列房屋中房屋的索引
2) 给一个房间id,归还它所在的房子
3) 给定房间id,返回房间id 7的房间对象:

(一)

(二)

(三)

1)
findIndex()
是一个简单的解决方案,但您需要再次使用数组函数来扫描房屋检查回调中的房间:

var houseIndex = street.houses.findIndex(h => h.rooms.some(r => r.id === roomId));
2) 与
find()
相同:

或者,如果已执行早期索引查找,请使用其结果:

var house = street.houses[houseIndex];
3) 将房屋房间层次展平为普通房间列表,并在其中搜索所需房间:

var room = street.houses.flatMap(h => h.rooms).find(r => r.id === roomId);
从这里开始:或者搜索其他问题,通过搜索包含的值来查找数组(对象)索引。
var roomObject = street.houses.find(house => house.rooms.find(room => room.id == 7)).rooms.find(room => room.id == 7)
var houseIndex = street.houses.findIndex(h => h.rooms.some(r => r.id === roomId));
var house = street.houses.find(h => h.rooms.some(r => r.id === roomId));
var house = street.houses[houseIndex];
var room = street.houses.flatMap(h => h.rooms).find(r => r.id === roomId);