我有一系列房屋,里面有一系列房间。
每个房间、房子和街道都有一个唯一的 ID(例如:如果房子 1 中的房间的 ID 为 1..4,则房子 2 中的房间的 ID 为 5..9)
var street = {
id = 1,
streetname = 'stack street',
houses = [
{
id: 1,
type: 'brick'
rooms: [
{
id: 1,
color: 'blue'
}, ... a bunch more
]
}, ... a bunch more
]
}
是否有像 arr.findIndex() 这样的简单解决方案:
1)给定房间 id,返回房屋数组中房屋的索引,以及该房屋数组房间中房间的索引
2)给定房间 id,返回房屋它在
3) 给定房间 id,返回房间对象
1)这findIndex()
是一个简单的解决方案,但您需要再次使用数组函数来扫描房屋检查回调中的房间:
var houseIndex = street.houses.findIndex(h => h.rooms.some(r => r.id === roomId));
2) 与以下相同find()
:
var house = street.houses.find(h => h.rooms.some(r => r.id === roomId));
或者如果较早的索引查找就位,请使用其结果:
var house = street.houses[houseIndex];
3) 将房屋-房间层次结构展平为一个简单的房间列表,并在其中搜索所需的房间:
var room = street.houses.flatMap(h => h.rooms).find(r => r.id === roomId);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句