如何从数组中删除单个数据?

时间:2017-08-29 14:36:48

标签: javascript arrays object

如何使用删除数组中的一个项目?我想使用patientserialno删除第一个数据。我正在推送这样的数据:

BookingJobRequestEntity.push({
  PatientSerialNo: PatientSerialNo, 
  Department_SlNo: Department_SlNo, 
  IsHospitalBooking: IsHospitalBooking, 
  Pickupdate: Pickupdate, 
  Contact_SlNo: Contact_SlNo
});

我有这个视图的数组:

[{
  PatientSerialNo: 1, 
  Department_SlNo: 1, 
  IsHospitalBooking: false, 
  Pickupdate: "01/08/2017", 
  Contact_SlNo: "36"
},
{ 
  PatientSerialNo: 2, 
  Department_SlNo: 1, 
  IsHospitalBooking: false, 
  Pickupdate: "", 
  Contact_SlNo: "36"
},
{
  PatientSerialNo: 3, 
  Department_SlNo: 1, 
  IsHospitalBooking: false, 
  Pickupdate: "",  
  Contact_SlNo: "36"
}]

2 个答案:

答案 0 :(得分:0)

您可以使用 Array.prototype.splice 方法删除项目,但您需要先在数组中搜索此项目索引。

您还可以使用 Array.prototype.filter 过滤数组数据,并删除指定为PatientSerialNo的数据:

BookingJobRequestEntity = BookingJobRequestEntity.filter(function(item){
      return item.PatientSerialNo != 1;
});

var BookingJobRequestEntity = [{
    PatientSerialNo: 1,
    Department_SlNo: 1,
    IsHospitalBooking: false,
    Pickupdate: "01/08/2017",
    Contact_SlNo: "36"
  },
  {
    PatientSerialNo: 2,
    Department_SlNo: 1,
    IsHospitalBooking: false,
    Pickupdate: "",
    Contact_SlNo: "36"
  },
  {
    PatientSerialNo: 3,
    Department_SlNo: 1,
    IsHospitalBooking: false,
    Pickupdate: "",
    Contact_SlNo: "36"
  }
]

var arr = BookingJobRequestEntity.filter(function(item){
      return item.PatientSerialNo != 1;
});
console.log(arr);

答案 1 :(得分:-1)

要查找数组的索引,可以使用Array.findIdex

  

findIndex() 方法返回数组中第一个满足提供的测试函数的元素的索引。否则返回-1

     

<强>参数

     

回调:要对数组中的每个值执行的函数,有三个参数:

     

<强>参数

     

元素 :数组中正在处理的当前元素。

     

index :数组中正在处理的当前元素的索引。

     

数组 :调用了数组findIndex。

     

回调 :(可选)。执行回调时用作此对象。

所以,使用给定的index:...

您可以使用Array.splice其中:

  

<强>参数

     

start :开始更改数组的索引(原点为0)。如果大于数组的长度,实际的起始索引将设置为数组的长度。如果是负数,将从数组的末尾开始那么多元素(使用原点1),如果绝对值大于数组的长度,则将设置为0。

     

deleteCount (可选):一个整数,指示要删除的旧数组元素的数量。如果deleteCount为0,则不删除任何元素。在这种情况下,您应该至少指定一个新元素。如果deleteCount大于从start开始的数组中剩余的元素数,那么通过数组末尾的所有元素都将被删除。

     

返回值 :包含已删除元素的数组。如果仅删除一个元素,则返回一个元素的数组。如果没有删除任何元素,则返回一个空数组。

e.g:

Array.splice(index, 1);

index是您需要删除的项目的位置。

这样的事情:

&#13;
&#13;
(function() {
  var data = [{
      PatientSerialNo: 1,
      Department_SlNo: 1,
      IsHospitalBooking: false,
      Pickupdate: "01/08/2017",
      Contact_SlNo: "36"
    },
    {
      PatientSerialNo: 2,
      Department_SlNo: 1,
      IsHospitalBooking: false,
      Pickupdate: "",
      Contact_SlNo: "36"
    },
    {
      PatientSerialNo: 3,
      Department_SlNo: 1,
      IsHospitalBooking: false,
      Pickupdate: "",
      Contact_SlNo: "36"
    }
  ];

  function deleteObjectByPatientSerialNo(id) {
    var index = data.findIndex(function(x) {
      return x.PatientSerialNo === id;
    });
    if (index > -1) {
      data.splice(index, 1); // Only remove where the id matches with PatientSerialNo.
    }
    return data; // Returns the array.
  }
  data = deleteObjectByPatientSerialNo(1); // Set the PatientSerialNo to delete.
  console.log(data);
})();
&#13;
&#13;
&#13;