jqueryextend覆盖数组的一部分
我正在创建一个GoogleChrome用户脚本,它将存储用户选择忽略的用户名。所有被忽略的用户都将使用HTML5本地存储API本地存储 我使用jQuery帮助将用户添加到JSON数组中,然后将其存储在本地。 我的问题是它总是覆盖第一项 如果我添加“testuser1”,然后尝试添加“testuser2”,它将存储“testuser2”的详细信息,“testuser1”将消失jqueryextend覆盖数组的一部分,jquery,arrays,html,local-storage,extend,Jquery,Arrays,Html,Local Storage,Extend,我正在创建一个GoogleChrome用户脚本,它将存储用户选择忽略的用户名。所有被忽略的用户都将使用HTML5本地存储API本地存储 我使用jQuery帮助将用户添加到JSON数组中,然后将其存储在本地。 我的问题是它总是覆盖第一项 如果我添加“testuser1”,然后尝试添加“testuser2”,它将存储“testuser2”的详细信息,“testuser1”将消失 // Get users from localstorage var ignored_users = JSON.parse
// Get users from localstorage
var ignored_users = JSON.parse(localStorage.getItem("ignore_list"));
// If NULL, prepare as JSON
if(ignored_users === null)
{
var ignored_users = {};
}
// Prep
var username = get_username_profile();
desc = prompt("Why do you want to ignore this user?");
// Add to list
add_to_list = [{
"username" : username,
"description" : desc
}];
$.extend(ignored_users, add_to_list);
localStorage["ignore_list"] = JSON.stringify(ignored_users);
// Highlight as ignored
$(".user_wrapper").css("background-color","#B40404");
ignored\u users
是一个包含数组的对象(您应该将其设置为数组,除非您想在对象中存储额外信息),您正在覆盖该数组,因此您的行为是预期的,您应该做的是检索数组,然后将额外对象推到该数组上:
var ignored_users = JSON.parse(localStorage.getItem('ignore_list'));
if (!ignored_users) {
ignored_users = [];
}
var username = get_username_profile();
desc = prompt("Why do you want to ignore this user?");
var add_to_list = {
"username" : username,
"description" : desc
};
ignored_users.push(add_to_list);
localStorage['ignore_list'] = JSON.stringify(ignored_users);
PS:不会对重复的被忽略用户进行检查,您可能应该这样做:)
被忽略的用户
是一个包含数组的对象(您应该将其设置为数组,除非您想在对象中存储额外信息),您正在覆盖该数组,因此您的行为是预期的,您应该做的是检索数组,然后将额外的对象推到上面:
var ignored_users = JSON.parse(localStorage.getItem('ignore_list'));
if (!ignored_users) {
ignored_users = [];
}
var username = get_username_profile();
desc = prompt("Why do you want to ignore this user?");
var add_to_list = {
"username" : username,
"description" : desc
};
ignored_users.push(add_to_list);
localStorage['ignore_list'] = JSON.stringify(ignored_users);
PS:不会对重复的被忽略用户进行检查,您可能应该这样做:)
$。extend
用于对象。在数组中使用它是没有意义的。要“扩展”数组,请使用。在您的情况下,使用.push
可能更有意义,但是--您不需要将正在创建的对象包装在数组中。$。extend
用于对象。在数组中使用它是没有意义的。要“扩展”数组,请使用。在您的情况下,使用.push
可能更有意义,不过--您不需要将正在创建的对象包装在数组中。ignord\U users最初是什么样子?[{“username”:“test\u user1”,“desc”:false};为什么不直接执行忽略的用户.push()?ignord用户最初是什么样子的?[{“username”:“test_user1”,“desc”:false}];为什么不直接执行忽略的用户。push()?