Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jqueryextend覆盖数组的一部分_Jquery_Arrays_Html_Local Storage_Extend - Fatal编程技术网

jqueryextend覆盖数组的一部分

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

我正在创建一个GoogleChrome用户脚本,它将存储用户选择忽略的用户名。所有被忽略的用户都将使用HTML5本地存储API本地存储

我使用jQuery帮助将用户添加到JSON数组中,然后将其存储在本地。 我的问题是它总是覆盖第一项

如果我添加“testuser1”,然后尝试添加“testuser2”,它将存储“testuser2”的详细信息,“testuser1”将消失

// 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()?