1

人を無視リストに追加するスクリプトを作成しましたが、一度追加した人を削除すると問題が発生します。1 人のユーザーをアレイから削除しても、ユーザーを無視リストに追加できます。両方の人を無視リストから削除すると、それ以上追加できなくなります。「ignored_users」が配列ではなくなったからだと思いますか?

このコードを使用して無視リストに人を追加します: {all vars are set, and works}

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);
    }
}
4

3 に答える 3

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);
    }
}

また、配列から要素を削除する他の形式もここで確認できます。

于 2013-07-04T14:51:54.100 に答える