如何从json localStorage字符串中提取数字值?

时间:2019-01-16 20:45:33

标签: javascript json

我是JSON新手,请多多包涵!

我将3个数字值存储在localStorage中,然后需要将它们加起来。

出现本地存储json字符串(将随机输入的数字存储到本地存储中)

    {"bookmarks3":"[{\"answer\":\"989\"}]","bookmarks4":"[{\"answer\":\"8777\"}]","bookmarks5":"[{\"answer\":\"8777\"}]"}

这是我的代码:

    function bookmarkMath() {
    // Fetch input
    // Get bookmarks from LocalStorage
    var bm1 = JSON.stringify(localStorage);
    var bm2 = 10;
    var bm3 = 30;
    var bookmarksTotal = JSON.parse(bm1) + bm2 + bm3;
    // Get output id 
    var bookmarkmathResults = document.querySelector('.input-results-math');

    // Build outputs
    bookmarkmathResults.innerHTML = '';


    var name = bookmarksTotal;  

    bookmarkmathResults.innerHTML = name;
    bookmarkmathResults.style.display = 'inline-block';

    console.log(`Total is "${booksmarksTotal}"`);

    }

本地存储输出

    bookmarks3=[[{"answer":"35"}]]
    bookmarks4=[[{"answer":"355"}]]
    bookmarks5=[[{"answer":"2344"}]]

任何帮助将不胜感激!!!!

2 个答案:

答案 0 :(得分:0)

没有理由对JSON进行字符串化,因为无论如何稍后都将再次对其进行解析。

您可以通过执行localStorage.getItem或localStorage.param轻松获得值

因此在上面的示例中,您将执行以下操作:

var bm1 = localStorage.getItem('bookmarks1');

或者您可以通过以下方式访问:

var bm1 = localStorage.bookmarks1

您当前的设置只是json.parse将返回JSON而不是与您的密钥关联的值的数据。

要仅获取数字,请也执行.answer。因此:

var bm1. = localStorage.bookmarks1[0].answer

var bm1 = localStorage.getItem('bookmarks1')[0].answer

注意,您正在存储一个数组,因此您需要获取索引0,看起来每个条目中的索引数不超过一个。

答案 1 :(得分:0)

如果您想从bm1获取每个数字,只需像这样遍历对象即可:

for (var bookmark in bm1) {
    console.log(key[0].answer);
}

这会将以下内容输出到控制台;

989
8777
8777