Приведение переменной к выводу "typeof" в JavaScript - PullRequest
0 голосов
/ 08 октября 2019

Я создаю систему на JavaScript, где я могу устанавливать и получать переменные из локального хранилища. Моя проблема в том, что когда я устанавливаю переменную, которая является целым числом для локального хранилища, и я получаю ее обратно из локального хранилища, она возвращает строку, а не целое число / число.

Я пробовал typeof в JavaScript и незнать, как преобразовать мою переменную из локального хранилища (строка) в переменную (целое число).

function setVar(name, value) {
    // Set variable type
    var json = localStorage.getItem("types");
    if(json == null) {
        json = {};
    }else{
        json = JSON.parse(json);
    }
    json[name] = typeof value;
    localStorage.setItem("types", JSON.stringify(json));
    // Set the variable
    localStorage.setItem(name, value);
}

function getVar(name, defaultValue = 0) {
    var v = localStorage.getItem(name);
    // Set default value if value is not already set
    if(v == null) {
        setVar(name, defaultValue);
        v = defaultValue;
    }
    // Cast to value type
    var type = JSON.parse(localStorage.getItem("types"))[name];

    // TODO: Cast v (string from localStorage) to type (output from typeof) 

    return v;
}

Все работает. Мне просто нужно выяснить, как преобразовать мою переменную в нужный тип. Возможно, я подхожу к этому неправильно, но что-то помогает.

Ответы [ 2 ]

0 голосов
/ 08 октября 2019

Вот решение благодаря @Bergi

function setVar(name, value) {
    // Set the variable
    localStorage.setItem(name, JSON.stringify(value));
}

function getVar(name, defaultValue = 0) {
    // Get variable from local storage
    var v = JSON.parse(localStorage.getItem(name));
    // Set default value if value is not already set
    if(v == null) {
        setVar(name, defaultValue);
        v = defaultValue;
    }
    return v;
}
0 голосов
/ 08 октября 2019

попробуйте использовать if-else, как это

if(type == 'number') { v = parseFloat(v) }
else if(type == 'string') { v = v.toString() } // Just an example
...