У меня есть список объектов, которые содержат имена людей и время их обслуживания. Эти имена могут встречаться более одного раза в этом списке, и время обслуживания может быть разным для каждого случая. То, что я пытаюсь сделать, - это создать HashSet имен с прикрепленным к нему индексом, чтобы я мог ссылаться на него в большом списке без необходимости создания вложенного для l oop. Например, если у меня есть список:
[{Name: 'john doe', ServiceTime: '20min'}, {Name: 'john doe', ServiceTime: '25min'},
{Name: 'john doe', ServiceTime: '31min'}, {Name: 'billy bob', ServiceTime: '1min'},
{Name: 'billy bob', ServiceTime: '12min'}, {Name: 'john doe', ServiceTime: '19min'}]
И я создаю свой HashSet, чтобы он выглядел так:
{'john doe': 0, 'billy bob': 1}
Вот как я это делаю:
let count = 0;
list.map(obj => arr[obj.Name] = arr[obj.Name] ? arr[obj.Name] : count++)
Значение ключа увеличивается каждый раз, когда НОВЫЙ человек найден, если это имеет смысл. После этого я перебираю созданный мной новый объект с именами, чтобы создать массив объектов, в котором будут храниться имена людей и массив для хранения их времени обслуживания, например:
[{Name: 'john doe', ServiceTimes:[]}, {Name: 'billy bob', ServiceTimes:[]}]
С помощью этой информации я могу go вернуться назад и перебрать свой первоначальный список, обновив индекс для поиска по паре ключ-значение моего HashSet следующим образом:
list.map(obj => {
let index = arr[obj.Name];
if(temp[index] !== undefined){
temp[index].ServiceTimes.push(obj)
}
})
Проблема, с которой я сталкиваюсь, что после создания моего HashSet я замечаю, что с индексами у меня происходит ошибка на 1. Например, список, который я предоставил выше, дает мне HashSet:
{'john doe': 1, 'billy bob': 2}
, а с другими списками я получаю HashSet
{'john doe': 0, 'billy bob': 1}
Я, очевидно, хочу, чтобы мой HashSet выглядел как последний один, но не может понять, почему мой счет добавляется дважды в некоторых сценариях ios, а не в других. Если кто-то может указать мне правильное направление или понять, что я могу делать неправильно, что является причиной этой проблемы, я был бы очень признателен. Спасибо!
PS Извините за длинный вопрос.