Всё работает:
var navItems = Array.from({length: 10}, (_, id) => ({
id,
title: 'ещё',
children: []
}));
navItems.find(item => item.id === 5).children = navItems.slice(5, navItems.length);
console.log(navItems)
Возможно объекты у вас в получаемом navItems заморожены или просто свойство children имеет запрет на запись, проверьте:
var item = navItems.find(item => item.id === 5);
console.log(
Object.isFrozen(item),
Object.getOwnPropertyDescriptor(item, 'children').writable,
Object.isFrozen(item.children)
)
Если заморожен только item или ограничена запись, но сам children не заморожен, то вместо замены children вы можете просто изменить его содержимое:
var children = navItems.find(item => item.id === 5).children;
children.splice(0, children.length, ...navItems.slice(5, navItems.length));
Если заморожено всё, то только грязные хаки с подменой Object.freeze. Но перед этим стоит подумать: если объекты заморожены, наверное для этого была какая-то причина?