Если данные сериализуемы, вы можете использовать функцию возрождения JSON.parse
. Если перебираемое значение является массивом, вернуть из него .slice(0, 2)
:
const result = JSON.parse(
JSON.stringify(myArr),
(_, val) => Array.isArray(val) ? val.slice(0, 2) : val
);
const myArr = [
{
id: '123',
items: [
{
id: 234,
items: [
{ id: 5 },
{ id: 6 },
{ id: 7 },
]
},
]
}
];
const result = JSON.parse(
JSON.stringify(myArr),
(_, val) => Array.isArray(val) ? val.slice(0, 2) : val
);
console.log(result);
Или, чтобы сделать это более вручную:
const transform = (item) => {
if (Array.isArray(item)) {
return item.map(transform).slice(0, 2);
}
if (typeof item === 'object' && item !== null) {
return Object.fromEntries(
Object.entries(item).map(
([key, val]) => [key, transform(val)]
)
);
}
// primitives:
return item;
};
const result = transform(myArr);
const myArr = [
{
id: '123',
items: [
{
id: 234,
items: [
{ id: 5 },
{ id: 6 },
{ id: 7 },
]
},
]
}
];
const transform = (item) => {
if (Array.isArray(item)) {
return item.map(transform).slice(0, 2);
}
if (typeof item === 'object' && item !== null) {
return Object.fromEntries(
Object.entries(item).map(
([key, val]) => [key, transform(val)]
)
);
}
// primitives:
return item;
};
const result = transform(myArr);
console.log(result);