VS
Array.prototype.includes - O(n)
В дуже великими масивами даних Сет швидший. Але, виходить, що .has працює з примітивами.
Size: a a a
VS
С
SG
С
OB
SG
history.push при редиректе на логин, если не хочешь урлС
DD
useReducer? есть простая форма, есть кнопка сабмит, как канонично сделать валидацию по клику, и сабмит если она успешна?В-
В-

DD
В-
MK
MK
В
MK
В
В
SK
const categoriesTreeData = [
{
title: `Все товары`,
key: "0-0",
children: [
{
title: `Волосы`,
key: "0-0-0",
children: [
{
title: `Уход за волосами`,
key: "0-0-0-0",
children: [
{
title: `Кондиционеры, бальзамы`,
key: "0-0-0-0-0",
},
{
title: `Кремы`,
key: "0-0-0-0-1",
},
{
title: `Лосьоны, ампулы для волос`,
key: "0-0-0-0-2",
},
{
title:`Маски для волос`,
key: "0-0-0-0-3",
},
{
title: `Масла, флюиды для волос`,
key: "0-0-0-0-4",
},
{
title:`Пиллинги, скрабы для кожи головы`,
key: "0-0-0-0-5",
},
{
title:`Шампуни`,
key: "0-0-0-0-6",
},
],
},
{
title: `Уход за волосами 2`,
key: "0-0-0-1",
children: [
{
title: `Кондиционеры, бальзамы`,
key: "0-0-0-1-0",
},
{
title: `Кремы`,
key: "0-0-0-1-1",
},
{
title: `Лосьоны, ампулы для волос`,
key: "0-0-0-1-2",
},
],
},
],
},
],
},
];
Уход за волосами 2), узнать длину его чилдренов для присваивания ключа новому чилдрену, и добавить новый чилдрен (). и вернуть уже обновлённый categoriesTreeDataSK
const filterByKey = (source, num) => {
return source.filter((record) => {
if (!!record.children && record.children.length > 0) {
record.children = filterByKey(record.children, num);
}
return record.key !== num;
});
};
const mappingByKey = (source, num, value) => {
return source.map((record) => {
if (!!record.children && record.children.length > 0) {
record.children = mappingByKey(record.children, num, value);
}
return { ...record, title: record.key === num ? value : record.title };
});
};
Но вот достать необходимый вложенный объект, добавить ему чилдрен, сформировать ключ для чилдрена.... тут что-то меня мозг пока подводит