Home > Software engineering >  Typescript - Push value of arrivalDate in array
Typescript - Push value of arrivalDate in array

Time:02-23

I would like to store every arrivalDate in my array list. Someone could tell me how can I do it? But my array is still empty.. Thank you very much guys..

Json returned by the API:

{
    "reservations": {
        "reservationInfo": [
             {
                 "roomStay": {
                      "arrivalDate": "11am"
                 },
                 "WeatherR": {
                      "sound": "cloudy"
                 },
             },
             {
                  "roomStay": {
                      "arrivalDate": "7pm"
                   },
                  "WeatherR": {
                       "sound": "cloudy"
                   },
             }
        ]
    }
}

component.ts

searchForReservation() {
  alert('hello');
  this.http.get('/api/searchForReservation')
    .subscribe((data) => {
      this.ddataIno = data;
      this.ddataIno = this.ddataIno.result.reservations.reservationInfo;
      console.log('number of value', this.ddataIno.length);
      console.log('content', this.ddataIno);
      for (let i = 0; i <= this.ddataIno[i].length; i  ) {
        this.list = this.ddataIno.roomStay.arrivalDate;
      }
      console.log('store array', this.list)

    })
}

CodePudding user response:

searchForReservation() {
  alert('hello');
  this.http.get('/api/searchForReservation')
    .subscribe((data) => {
      const reservationInfo = this.data.result.reservations.reservationInfo;
      this.list = reservationInfo.map(e => e.roomStay.arrivalDate);
    })
}

CodePudding user response:

Here's a working example in vanilla JS. You would need to make some small adjustments for angular, like this.list = ... instead of let list = ...

Using Array#map, you can create a new array from the JSON object

data.reservations.reservationInfo.map(r => r.roomStay.arrivalDate)

let data = {
  "reservations": {
    "reservationInfo": [{
        "roomStay": {
          "arrivalDate": "11am"
        },
        "WeatherR": {
          "sound": "cloudy"
        },
      },
      {
        "roomStay": {
          "arrivalDate": "7pm"
        },
        "WeatherR": {
          "sound": "cloudy"
        },
      }
    ]
  }
}

// declare your list as an array at the top
// list: []

// below would start off as 'this.list'
let list = data.reservations.reservationInfo.map(r => r.roomStay.arrivalDate);

console.log(list);

CodePudding user response:

Your for loop is just reassigning the value of this.list

I suggest reading up on Array methods

I would use a map method, e.g.

this.list = this.ddataIno.result.reservations.reservationInfo.map(i => i.roomStay.arrivaldate);
  • Related