Удалить все ключи с одинаковым именем из массива объекта

1

У меня есть массив объектов Javascript, и я хочу очистить все пары ключ-значение, где имя ключа - это id. Как я могу это сделать?

Пример ввода:

var s = [{
  items:[{
    id: 1,
    items:[{
      items:[{
        id: 2,
        items:[]
      }]
    }]
  }],
  id: 3
}]

Пример вывода:

var s = [{
  items:[{
    items:[{
      items:[{
        items:[]
      }]
    }]
  }]
}]
Теги:

2 ответа

2

Вы можете использовать такую рекурсивную функцию:

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/

1

Вы можете украсить итерацию с помощью генератора:

 function* flattenItems(items) {
  for(const item of items) {
    yield item;
    yield* flattenItems(item.items);
  }
}

Итак, ваша задача довольно проста:

 for(const item of flattenItems(s))
   delete item.id;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню