Как сохранить несколько объектов в массив - PullRequest
1 голос
/ 07 августа 2020

У меня есть этот объект после нажатия кнопки сохранения.

{description: "ghhg", dateSelected: "2020-02-27", startDate: "2020-02-27", company_id: "2", hr_id: 
72, …}

Но всякий раз, когда я нажимаю на кнопку «Сохранить», он дает мне новый объект вместо того, чтобы сохранять его в массиве. Вопрос в том, как я могу хранить каждый объект внутри массива, чтобы получить

[
{description: "ghhg", dateSelected: "2020-02-27", startDate: "2020-02-27", company_id: "1" …},
{description: "grrrhhg", dateSelected: "2020-03-27", startDate: "2020-03-27", company_id: "2" …},
{description: "ghrtrhg", dateSelected: "2020-04-27", startDate: "2020-04-27", company_id: "2",  …},
.
.
.
]

Это мой код

saveHolidays(hols : []){
 this.holidays.hr_id = this.hrID.id;
 this.getHolidayDate = this.holidays.dateSelected.split(" to ");
 this.holidays.startDate = this.getHolidayDate[0];
 this.holidays.endDate = this.getHolidayDate[1];
 this.getHols = this.holidaysData;
 this.holiday_date = [];
 this.holidaysArray = [];
 var tempHolidays = [];
 this.getHols.forEach((element,key) => {
   if(element.startDate){
     this.holiday_date.push({startDate : element.startDate, endDate : element.endDate, company_id : 
  element.company_id})
   }
 });
 var getElement = [];
 let getStartDate = this.holiday_date.map(element => {
 getElement.push(element.startDate, element.company_id);
 return getElement;
 });

 for(var i = 0; i < getStartDate.length; i++){
  var isStartDatePresent = getStartDate[i].includes(this.holidays.startDate);
  var isCompanyIdPresent = getStartDate[i].includes(+this.holidays.company_id);
 }
 if(isStartDatePresent == true && isCompanyIdPresent == true ){
   this.snotifyService.error('Holiday Already Exist');    
 }else{
   hols = this.holidays;
   for(var i = 0; i < hols.length; i++){
     this.holidaysArray.push(hols[i]);
   }

  return this.holidaysArray
 }
}

Ответы [ 3 ]

0 голосов
/ 07 августа 2020

Вы повторно инициализируете свой массив каждый раз, когда нажимаете кнопку сохранения, набирая this.holidaysArray. Удаление может решить вашу проблему.

0 голосов
/ 07 августа 2020

Установите this.holidaysArray в массив ТОЛЬКО ЕСЛИ это еще не Array.

/* REPLACE */
    this.holidaysArray = []
/* WITH */
  if (!Array.isArray(this.holidaysArray)) {
    this.holidaysArray = []
  }

Кроме того, я настоятельно рекомендую использовать тестовую структуру, например Jest для проверки вашего кода.

Удачи ...

0 голосов
/ 07 августа 2020

Я немного заржавел, но если я правильно помню, массивы JS не имеют фиксированной ширины, поэтому вы можете sh каждый сохраненный праздник передать во внешний массив или вернуть его и установить желаемый внешний массив к нему.

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