Я хочу проверить наличие свойства объекта, которое находится внутри массива, чтобы я мог собрать список уникальных room
s со списком time
s (пара строк в данном случае). Я не нашел краткого способа моделирования этой процедуры вне тривиальных массивов чисел.
Я попытался перебрать список, чтобы проверить, содержит ли список, в который я вставляю, уже соответствующее поле класса, к сожалению, переменная i
не будет обновляться в функции, которую я передал в findIndex()
const getClassroomList = (list) => {
const temp = [{
classroom: '',
times: [{
start_time: '',
end_time: '',
}],
}];
// For every classroom in list, check if classroom already exists.
// If it does, add object to array
// Else add pair of times to existing classroom
for (let i = 0; i < list.length; i += 1) {
const idx = list.findIndex((room) => {
// console.log(i); Here the variable i won't update so the below fails
return room.classroom === list[i].classroom;
});
if (idx === -1) {
temp.push({
classroom: list[i].classroom,
times: [{
start_time: list[i].start_time,
end_time: list[i].end_time,
}],
});
} else {
temp[idx].times.push({
start_time: list[i].start_time,
end_time: list[i].end_time,
});
}
}
return temp;
};
Кажется, что функция инициализирует себя первым экземпляром i
, который она видит и сохраняет на 0
, когда я хочу, чтобы она продолжала увеличиваться. Как мне добиться этого поведения?