acc[date] ??= { ... } - это сокращение от acc[date] = acc[date] ?? { ... } - если acc[date] отсутствует, значит, будет создан. И, в любом случае, существовал ли acc[date] раньше или был только что добавлен, он будет результатом выражения - так что можно сразу же обратиться к какому-нибудь из его свойств, в данном случае это объект documents. С которым выполняются аналогичные действия - добавление вложенного объекта в случае отсутствия и обращение уже к его свойству (массив products), с которым тоже что-то можно сделать (добавить элемент). Более традиционный вариант записи этого куска будет примерно таким:if (!acc[date]) {
acc[date] = {
date,
documents: {},
};
}
const documents = acc[date].documents;
if (!documents[n.docTypesName]) {
documents[n.docTypesName] = {
date: n.date,
docId: n.docId,
docTypesName: n.docTypesName,
products: [],
};
}
documents[n.docTypesName].products.push({
name: n.name,
price: n.price,
image: n.image,
qunatity: n.quantity,
});
b.findIndex(e => e === 0)arr
.slice(0, (arr.indexOf(0) + 1) || arr.length)
.reduce((acc, n) => acc + n, 0)
(acc[n.storey] ??= []).push(n)на(acc[n.storey] = acc[n.storey] || []).push(n)?