@sdgroup14

Как отсетять ненужные данные из обьекта?

Всем привет... Написал админку, где-то около 15 страниц. Все окей, пытаюсь отрефакторить. Суть вопроса:
Есть к примеру интерфейс
interface Article {
      id: number,
      head: string,
      text: string
  }

В ходе разработки... Пишу код без интерфейса(выше - это чтоб вам было понятно какой на входе и выходе обьект). Так вот. Я к примеру получил от апи "article", но по клику на head я делаю тугл статьи и к примеру считаю символы при дополнении textarea и в итоге перед сохранением вот такой вышел обьект
api_data = {
      id: 25,
      head: 'Заголовок',
      text: 'Текст статьи',
      is_open: true,
      text_length: 12
  }


Но при отправке мне приходится каждый раз отсеивать is_open text_length так как этих свойств нету для записи в апи.
apiData = new FormData();
    for (const key in article) {
      if (key === 'id' ||  key === 'head'  ||  key  === 'text'  && article[key] ) {
         apiData.append(option, article[key]);
      }
    }


Есть какое-то красивое решение для таких манипуляций, чтоб через какую-то функцию или родной метод ангулара отсеивать такие как is_open и т.д.?
  • Вопрос задан
  • 66 просмотров
Решения вопроса 1
AlexXYZ
@AlexXYZ
O Keep Clear O
Да вроде и норм всё. Можно так, чтобы key несколько раз не писать:
if (['id', 'head', 'text'].indexOf(key)>=0  && article[key] ) {
         apiData.append(option, article[key]);
}

Если важно, то иногда имеет смысл добавить hasOwnProperty()
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Таких is_open и text_length не должно быть в объекте статьи, если они непосредственно не относятся к сущности. Состояние я бы хранил в поле компонента самой статьи.
Но раз у вас так, есть такой вариант.
public postArticle({ id, head, text }: Article) {
    const apiFields = { id, head, text };
    const apiData = new FormData();

    for (const key in apiFields) {
      apiData.append(key, apiData[key]);
    }
  }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы