Babel
UPD:
Ну, если в массиве всегда будут объекты, можно так:
var arr = [
{
name: 'Alex',
data: {
role: '1'
},
childItems: ['Bob', 'Alice']
},
{
name: 'Kristine',
data: {
role: '2'
},
childItems: ['Kate', 'Morgan']
}
];
function copy(object) {
var root = {};
Object.keys(object).forEach(function (key) {
var branch = object[key];
if (typeof branch === 'object' && !(branch instanceof Array)) {
root[key] = copy(branch);
} else {
root[key] = branch;
}
});
return root;
}
var newArr = arr.reduce(function (acc, entry) {
var clonedEntry = copy(entry);
delete(clonedEntry.childItems);
acc.push(clonedEntry);
return acc;
}, []);
console.log(arr); // [{ name: 'Alex', data: { role: '1' }, childItems: [ 'Bob', 'Alice' ] }, { name: 'Kristine', data: { role: '2' }, childItems: [ 'Kate', 'Morgan' ] }]
console.log(newArr); // [{ name: 'Alex', data: { role: '1' } }, { name: 'Kristine', data: { role: '2' } }]
Конечно, код не идеален, только для примера написал. По-хорошему, надо будет функцию
copy
сделать для разных типов.