[英]How to remove element from an array of objects?
我將jQuery 1.9.1和jQuery Mobile 1.3.1用於小型移動應用程序。 在某一時刻,我有一個對象數組,其中包含三個元素,一個字符串和兩個日期對象。 我要為其添加日期,並且我想檢查開始日期,如果開始日期已經在數組中,則希望將其刪除。
var myArray = [];
function removeByValue(arr, val) {
for (var i = 0; i < arr.length; i++) {
if (arr[i].begin == val) {
arr.splice(i, 1);
break;
}
}
}
$("#cal").bind('change', function (event, date) {
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDate();
removeByValue(myArray, new Date(year, month, day));
myArray.push({
"summary": "",
"begin": new Date(year, month, day),
"end": new Date(year, month, day)
});
});
關鍵是這似乎不起作用。 它會不斷將日期添加到我的數組中,如果我的數組中已經添加了日期,它仍會添加它。 簡而言之,我的removeByValue函數現在可以正常工作了。 知道如何解決嗎? 因此,我基本上想檢查所選日期是否在數組中,如果是,則不再將其添加到數組中,如果不是,則將其添加到數組中。
相互沖突的兩個相關代碼段是:
removeByValue(myArray, new Date(year, month, day));
if (arr[i].begin == val) {
您正在創建一個全新的對象,然后檢查它是否與已存在的對象相同。 不可以 這是全新的。
如果您可以相信arr[i].begin
是一個日期,那么可以使用日期比較:
if (arr[i].begin.getTime() === val.getTime()) {
這將同時使用兩個日期,並將它們轉換為以1970年以來的毫秒數表示的整數,然后確保這些整數匹配。
如果您嘗試查找和刪除值:
function removeByValue(arr, val) {
for (var i = 0; i < arr.length; i++) {
if(arr[i] == val) {
arr.splice(i, 1);
break;
}
}
}
如果您只關心第一個值:
function removeByValue(arr, val) {
if(arr[0] == val) {
arr.splice(0, 1);
break;
}
}
您可以通過內部時間戳比較日期:
if (arr[i].begin.getTime() == val.getTime()) {
arr.splice(i, 1);
break;
}
您正在比較兩個日期類型的值。 因此,您必須使用getTime()方法將值轉換為Date。
function removeByValue(arr, val)
{
var oldDate=val.getTime();
var l=arr.length;
for (var i = 0; i <l ; i++) {
if(arr[i].begin.getTime() === oldDate) {
arr.splice(i, 1);
break;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.