2013-07-04 37 views
1

我已經創建了一個腳本來將人添加到忽略列表,但是一旦我添加了它們,刪除它們就會出現問題。 如果我從數組中刪除一個用戶,我仍然可以將用戶添加到忽略列表中。如果我從忽略列表中刪除兩個人,我不能再添加。 我有一種感覺,因爲「ignored_users」不再是一個數組?jQuery保留一個數組,即使是空值

我加人使用此代碼忽略列表:{所有瓦爾已設置好,作品}

add_to_list = { 
    "username" : username, 
    "date_added" : "\"" + day + "/" + month + "/" + year + "\"", 
    "description" : desc 
}; 
ignored_users.push(add_to_list); 
localStorage["ignore_list"] = JSON.stringify(ignored_users); 

數組開始看起來像這樣:

ignored_users = [{"username":"test1","date_added":"\"4/7/2013\"","description":""},{"username":"test2","date_added":"\"4/7/2013\"","description":""}] 

從陣列碼刪除看起來像這樣:

$.each(ignored_users, function(i, person) { 
    if(person.username === username) 
    { 
     delete ignored_users[i]; 
     localStorage["ignore_list"] = JSON.stringify(ignored_users); 
    } 
} 
+0

你是如何添加它們的? – mishik

+0

ADD_TO_LIST = { \t \t \t \t \t 「用戶名」:用戶名, \t \t \t \t \t 「DATE_ADDED」: 「\」 「+日+ 」/「 +月+ 」/「 +年+ 」\「」, \t \t \t \t \t 「說明」:降序 \t \t \t \t}; \t \t \t \t ignored_users.push(add_to_list); \t \t \t \t localStorage [「ignore_list」] = JSON.stringify(ignored_users); –

+0

你爲什麼要逃避這些引號字符? – Alnitak

回答

1

改爲使用本地循環和splice。在過去使用each時,從您正在迭代的陣列中刪除元素會對我造成問題。試試這個:

ignored_users = [{ 
    "username": "test1", 
    "date_added": "\"4/7/2013\"", 
    "description": "" 
}, { 
    "username": "test2", 
    "date_added": "\"4/7/2013\"", 
    "description": "" 
}] 

var username = "test1"; 
for (var i = 0; i < ignored_users.length; i++) { 
    if (ignored_users[i].username === username) { 
     ignored_users.splice(i, 1); 
     localStorage["ignore_list"] = JSON.stringify(ignored_users); 
    } 
} 

Example fiddle

+0

完美,當它允許我時,我會選中它! :d –

0

delete ignored_users[i];實際上並不會做你想做的,它將使一個元素#I不確定,但不會縮水的數組。

您需要使用splice()方法。若要從數組中刪除元素#I:

array.splice(i, 1) 
0

您正在使用delete刪除從數組元素,但這不更新數組的索引,將其設置爲undefined要刪除的索引。所以當你重新運行你的代碼person將是未定義的。嘗試:

$.each(ignored_users, function(i, person) { 
    if(person && person.username === username) 
    { 
     delete ignored_users[i]; 
     localStorage["ignore_list"] = JSON.stringify(ignored_users); 
    } 
} 

你也可以看到其他形式刪除數組中的元素here