如何将多个对象保存到一个数组中



单击保存按钮后,我就有了这个对象。

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

但每当我点击save时,它就会给我一个新对象,而不是将它存储在数组中。问题是如何将每个对象存储在数组中以获得

[
{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
}
}

我有点生疏,但如果我没记错的话,JS数组没有固定的宽度,所以你可以将每个保存的假日推送到一个外部实例化的数组中,或者返回一个,并为其设置所需的外部数组。

每次单击保存按钮时,都会通过写入this.holidaysArray来重新初始化数组。删除它可能会解决您的问题。

this.holidaysArray设置为数组ONLY IF它还不是Array

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

此外,我强烈建议使用Jest这样的测试框架来测试您的代码。

祝你好运。。。

最新更新