В python все аргументы со значением по умолчанию появляются после аргументов без значения по умолчанию. Поэтому отображение должно начинаться с конца, пока вы не исчерпаете список значений по умолчанию. Следовательно, логика:
dict(zip(reversed(args), reversed(defaults)))
дает правильно отображенные значения по умолчанию.
Вместо использования forEach
используйте map
и действуйте так, как будто аргументы, предоставленные функции, являются неизменяемыми. Это безумие, что вы делаете details.forEach((detail) => {...});
, а затем назначаете detail
с помощью detail.unitPrice = coefficient * detail.price;
.