无法使用javascript将数组存储在本地存储中

时间:2018-10-02 11:21:15

标签: javascript local-storage local

因此,基本上,我试图从中创建一些用户信息存储在本地存储中,并更新和删除我刚刚开始处理的用户信息,但被困于在本地存储中插入完整的用户数据。 每当我将用户数据存储到本地存储中时,都会得到(对象:对象)。

floatToBinary32

3 个答案:

答案 0 :(得分:1)

对于将数据存储在本地存储中,记住只能存储字符串值非常重要。存储对象或数组(或对象数组)时,必须先将数据转换为JSON。

这很简单:

localStorage.setItem("record", JSON.stringify(data));

然后再次读取该值:

var record = JSON.parse(localStorage.getItem("record"));

如果不这样做,则Javascript将尝试使用toString()方法对数据本身进行字符串化。对于对象,这意味着将存储值[object Object],而不是对象的实际内容。

而且看来您在混淆Javascript对象和数组。

这是一个对象:

{
    firstName: "John"
    ID: "10"
}

这是一个数组:

[10, 20, 30, 40, 50]

请注意,在定义对象时使用'{'和'}',在定义数组时使用'['和']'。还要注意,我们可以在对象中命名属性,而数组中不能包含命名属性。

对象数组如下所示:

[
    {
        firstName: "John"
        ID: "10"
    },
    {
        firstName: "Mary"
        ID: "20"
    }
]

答案 1 :(得分:0)

由于localStorage仅处理字符串,因此您需要按以下方式使用JSON.parse / JSON.stringify

<!-- language: lang-js -->
var aadTenantId = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
var aadClientId = 'yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyy'
var microsoftGraphScopes = [
        "email",
        "openid",
        "offline_access",
        "Calendars.Read"
    ]
microsoftGraphScopes = microsoftGraphScopes.join('%20');

var redirectURL = 'https://login.microsoftonline.com/common/oauth2/nativeclient';
var redirectURLEncoded = encodeURIComponent(redirectURL);

var aadEndpointURL = 'https://login.microsoftonline.com/' + aadTenantId + '/oauth2/v2.0/authorize?client_id=' + aadClientId + '&redirect_uri=' + redirectURLEncoded + '&scope=' + microsoftGraphScopes + '&response_type=token';

var webAuthenticationBroker = Windows.Security.Authentication.Web.WebAuthenticationBroker;
var webAuthenticationOptions = Windows.Security.Authentication.Web.WebAuthenticationOptions;
var webAuthenticationStatus = Windows.Security.Authentication.Web.WebAuthenticationStatus;

var aadEndpointURI = new Windows.Foundation.Uri(aadEndpointURL);
var redirectURI = new Windows.Foundation.Uri(redirectURL);

webAuthenticationBroker.authenticateAsync(webAuthenticationOptions.none, aadEndpointURI, redirectURI)

答案 2 :(得分:0)

localStorage将项目存储在字符串中,因此,在这种情况下,您应该这样做:

function myFunction(){ var fname = document.getElementById("fname").value; var id = document.getElementById("id").value; if (typeof(Storage) !== "undefined") { // note: using {} ... person is an Object, not an Array var person = {firstName: fname , ID : id }; // use JSON.parse to parse the string to an Object var tempitem =JSON.parse(localStorage.getItem("record") || "[]"); // || [] so of it doesn't exist, returns an empty array to push to tempitem.push(person); // stringify the Object to store as a string localStorage.setItem("record", JSON.stringify(tempitem)); } }

,如果要从localStorage获取它,请执行以下操作:

localStorage.setItem("record", JSON.stringify(tempitem))