Есть ли вообще в js статический массив нашёл реализацию и может ли он вообще пригодится?
class Foo {
static bar = [];
}Не понятно многомерные массивы это разновидность Двумерных, Трёхмерных или что-то другое?
Зачем нужны зубчатые?
const arr = Object
.entries(obj)
.reduce((acc, [ k, values ]) => (
values.forEach((v, i) => (acc[i] ??= {})[k] = v),
acc
), []);const keys = Object.keys(obj);
const arr = obj[keys[0]]?.map((_, i) => {
return Object.fromEntries(keys.map(k => [ k, obj[k][i] ]));
}) ?? [];const zip = (arrs, defaultValue = null) =>
Array.from(
{ length: Math.max(...arrs.map(n => n.length)) },
(_, i) => arrs.map(n => i < n.length ? n[i] : defaultValue)
);
const combine = (keys, values, defaultValue = null) =>
keys.reduce((acc, n, i) => (
acc[n] = i < values.length ? values[i] : defaultValue,
acc
), {});
const arr = Array.from(
zip(Object.values(obj)),
combine.bind(null, Object.keys(obj))
); } else if (Array.isArray(value)) {
return value.reduce((acc, key) => {
acc[key] = indexs[key];
return acc;
}, {});
}const indexs = index.reduce((acc, key, i) => {
acc[key] = arr[i];
return acc;
}, {});return прерывает функцию. То есть у тебя происходит только одна итерация цикла, и затем выход из функции. Собери itemPrice[0] в список объявленный вне цикла (result.append(itemPrice[0])) и верни result вне цикла. Имей ввиду то что ты в своей имплементации объявил itemPrice вне цикла и это имеет 0 эффекта, так как при каждой итерации у тебя создается новый объект, например вот здесь itemPrice = i.find(... Over the last several years we’ve seen a whole range of ideas regarding the architecture of systems. These include:
Hexagonal Architecture (a.k.a. Ports and Adapters) by Alistair Cockburn and adopted by Steve Freeman, and Nat Pryce in their wonderful book Growing Object Oriented Software
Onion Architecture by Jeffrey Palermo
Screaming Architecture from a blog of mine last year
DCI from James Coplien, and Trygve Reenskaug.
BCE by Ivar Jacobson from his book Object Oriented Software Engineering: A Use-Case Driven Approach
Объект менять не нужно.
const SERIES = [
{
comment: '1 сезон',
folder: [
{ comment: '1 серия' },
{ comment: '2 серия' },
],
},
{
comment: '2 сезон',
folder: [
{ comment: '1 серия' },
{ comment: '2 серия' },
{ comment: '3 серия' },
],
},
];
const ItemsList = ({ header, items, active, onChange }) => (
<div>
<h3>{header}</h3>
<ul className="items">
{items.map(({ comment }, i) => (
<li
className={`item ${active === i ? 'active' : ''}`}
onClick={() => onChange?.(i !== active ? i : -1)}
>
{comment}
</li>
))}
</ul>
</div>
);
function App() {
const [ iSeason, setActiveSeason ] = useState(-1);
const [ iEpisode, setActiveEpisode ] = useState(-1);
const season = SERIES[iSeason];
const episode = season?.folder[iEpisode];
useEffect(() => {
setActiveEpisode(-1);
}, [ iSeason ]);
return (
<div>
<ItemsList
header="сезоны"
items={SERIES}
active={iSeason}
onChange={setActiveSeason}
/>
{season && <ItemsList
header="серии"
active={iEpisode}
onChange={setActiveEpisode}
items={season.folder}
/>}
{episode && <div>Выбрали: {season.comment}, {episode.comment}</div>}
</div>
);
}Скорее всего, активный элемент я собираюсь вынести в redux.
The functions passed to thereducersparameter can be accessed through thecaseReducersreturn field.
playlistSlice.caseReducers.playAudio(state, { payload: state.id }); <div class="div1">
<div class="div2">
Тут контент
</div>
</div>.div1 {
width: 300px;
height: 500px;
overflow: hidden;
}
.div2 {
overflow-y: scroll;
max-height: 100%;
width: 100%;
padding-right: 45px;
background: lightpink;
}