ФУнкция чище воды, но мне не нравится что вычисления повторяются
а что если сделать два мапнутых стора, один за другим? в первый достаётся нужный объект по id, во втором вычисляется что надо — если сам объект не поменялся, то второй мап не будет запускать новые вычисления.