在 javascript 中创建全局变量列表时出现问题 (Tampermonkey)

Issues creating a global variable list in javascript (Tampermonkey)

我想在 javascript 中创建一个全局变量列表,它将向列表中添加新元素。我需要它是全局的,因为我正在使用 Tampermonkey,我想将旧元素保留在列表中并能够向其中添加新元素。

我怎样才能正确地做到这一点?

我试过类似的方法,但没有用:c

var check_empty = GM_getValue("arr_names");
if(Array.isArray(check_empty) && check_empty.length > 0){ // list of usernames exists and is not empty
    var user = "RandomUsername";
    GM_setValue("arr_names", check_empty.push(user));
    var arr = GM_getValue("arr_names");
    for(var i=0; i<arr.length; i++){
        window.alert("Length: " + arr.length + " Elements inside: " + arr[i]);
    }
}
else{ // create the list
    GM_setValue("arr_names",["Initialized"]);
}

所以假设我 运行 这个代码 3 次。然后列表需要如下所示:

["Initialized", "RandomUsername", "RandomUsername"]

如果执行4次,则像这样:

["Initialized", "RandomUsername", "RandomUsername", "RandomUsername"]
GM_setValue("arr_names", check_empty.push(user));

如评论中所述,check_empty.push(user) returns 更新数组的长度,但您应该在此处传递数组。

您可以压入上一行中的元素并使用变异数组:

check_empty.push(user);
GM_setValue('arr_names', check_empty);