Любой способ или решение для преобразования строковых данных из JSON API в int в js? - PullRequest
0 голосов
/ 10 апреля 2020

Рассмотрим код ниже:

  componentDidMount(){
    const id = localStorage.getItem('id');



     fetch(`http://localhost:9000/api/calendar/list/${id}`,)
     .then((resp)=>{
       resp.json().then((res)=>{
          this.setState({
            data: res.data.map(item => {
              return {
                title: item.title,
                startDate: new Date(item.startDate),
                endDate: new Date(item.endDate),
                eventId: item.eventType  // from api it provide on string but I need to convert it in to an integer
              };

            })
          });
       })
     })

   }

Результат от API здесь:

enter image description here

Так что на фронтенде js, мне нужно установить для eventId такой номер, как Conference в num 1 , Запуск в num 2 , Trade Shows в num 3 . Могу ли я это сделать?

Ответы [ 2 ]

2 голосов
/ 10 апреля 2020

Вы можете создать объект для сопоставления строки с таким числом, где item1 и item2 являются примерами того, какими могут быть ваши данные API:

const item1 = {
  userId: 1,
  startDate: 123456,
  endDate: 123456,
  eventType: 'Conference'
};
const item2 = {
  userId: 2,
  startDate: 123456,
  endDate: 123456,
  eventType: 'Launching'
};

const map = { Conference: 1, Launching: 2, Trade: 3 };

console.log(map[item1.eventType]); // eventId will be 1 for Conference
console.log(map[item2.eventType]); // eventId will be 2 for Launching

В вашем коде это будет

const map = { Conference: 1, Launching: 2, Trade: 3 };
fetch(`http://localhost:9000/api/calendar/list/${id}`,)
     .then((resp)=>{
       resp.json().then((res)=>{
          this.setState({
            data: res.data.map(item => {
              return {
                title: item.title,
                startDate: new Date(item.startDate),
                endDate: new Date(item.endDate),
                eventId: map[item.eventType]
              };
            })
          });
       })
     })
0 голосов
/ 10 апреля 2020

Вы можете использовать Switch Case, если вам известны все значения

getEventId = eventType => {
  switch (eventType){
    case 'Conference'
      return 1;

      ...... // rest of the cases

     }
   }
}

. Затем используйте эту функцию для сопоставления eventType с eventId

eventId: getEventId(item.eventType)
.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...