如何使用jquery删除数组中的一个项目?我想使用patientserialno
删除第一个数据。我正在推送这样的数据:
BookingJobRequestEntity.push({
PatientSerialNo: PatientSerialNo,
Department_SlNo: Department_SlNo,
IsHospitalBooking: IsHospitalBooking,
Pickupdate: Pickupdate,
Contact_SlNo: Contact_SlNo
});
我有这个视图的json数组:
[{
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"
}]
答案 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
是您需要删除的项目的位置。
这样的事情:
(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;