У меня есть массив объектов Javascript, и я хочу очистить все пары ключ-значение, где имя ключа - это id
. Как я могу это сделать?
Пример ввода:
var s = [{
items:[{
id: 1,
items:[{
items:[{
id: 2,
items:[]
}]
}]
}],
id: 3
}]
Пример вывода:
var s = [{
items:[{
items:[{
items:[{
items:[]
}]
}]
}]
}]
Вы можете использовать такую рекурсивную функцию:
function removeKey(obj, searchKey) {
for(objKey in obj) {
if (objKey === searchKey)
delete obj[objKey];
else if (typeof obj[objKey] === 'object')
removeKey(obj[objKey], searchKey);
}
}
removeKey(yourObj, 'id')
Пример: http://jsfiddle.net/bsnfqkL9/3/
Вы можете украсить итерацию с помощью генератора:
function* flattenItems(items) {
for(const item of items) {
yield item;
yield* flattenItems(item.items);
}
}
Итак, ваша задача довольно проста:
for(const item of flattenItems(s))
delete item.id;