我是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"}]]
任何帮助将不胜感激!!!!
答案 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