如何修复表单输入中数组的重复项

时间:2019-06-03 12:38:04

标签: angular

我创建了一个有角度的酒店预订应用程序,该应用程序将预订存储在一个数组中,但是每次添加新预订时,最后一个预订都会被更新并替换为新预订。

我尝试遵循YouTube上的CRUD Artist应用程序教程,它具有相似的功能


// this method calculates the array variables before they are pushed

getCost(reserve: reservations) {
  this.person.map((b) => {
    if (b.id) {
      if (b.id === reserve.id) {
        reserve.id++;
      }
      b.name = reserve.name;
      b.lastname = reserve.lastname;
      b.email = reserve.email;
      b.phone = reserve.phone;

      b.category = reserve.category;
      b.checkin = reserve.checkin;
      b.days = reserve.days;
      b.people = reserve.people;

      if ((!b.days) || (!b.people)) {
          alert('Something went wrong in assigning the day or people');

        } else if (b.category === 'Single') {
          reserve.cost = 399.00 * b.days * b.people;
        }  else if (b.category === 'Double') {
          reserve.cost = 599.00 * b.days * b.people;
        } else if (b.category === 'Twin') {
          reserve.cost = 799.00 * b.days * b.people;
        } else if (b.category === 'Deluxe') {
          reserve.cost = 1999.00 * b.days * b.people;
        }

      b.cardnumber = reserve.cardnumber;
      b.cardholder = reserve.cardholder;
      b.expiary = reserve.expiary;

      if ((b.cardnumber === undefined) || (!b.cardnumber)) {
        reserve.payment = 'Unverified';
      } else {
        reserve.payment = 'Verified';
      }

    } else {
      alert('Id should not be empty');

    }

  });

}

// this method calls the method above then pushes the data into the array
  addPerson(v: any) {
    this.getCost(v);
    this.person.push(v);
  }

我希望每个新数组都包含新数据,而旧数组与它们的数据保持不变,但是我会得到重复的数据

1 个答案:

答案 0 :(得分:0)

我认为您应该将.map()调用替换为.forEach()