javascript - 如何将localstorage变量设置为函数
问题描述
我有这个功能
function sumFood (tot,tab_cout){
var tot = 0;
for (var i=0; i<tab_cout.length;i++) {
tot += Number(tab_cout[i]);
}
localStorage.setItem('tot',tot);
}
sumFood (GLC,GLCT);
sumFood (LIP,LIPT);
我希望 GLC、LIP 进入 localStorage(代替 tot),但由于某些原因,我得到的结果是未定义的......该怎么办?(console.log 给了我很好的结果)
解决方案
你得到 undefined 的原因是你硬编码了key
这一行:
localStorage.setItem('tot',tot);
它应该根据参数动态更改。您应该注意的另一件事是,将函数内的变量命名为与其参数相同的名称不是一个好习惯,这会造成混淆。尝试这个:
function sumFood (tot,tab_cout){
var total = 0;
for (var i=0; i<tab_cout.length;i++) {total += Number(tab_cout[i]);}
localStorage.setItem(`${tot}`,total);
}
sumFood(GLC,GLCT);
sumFood(LIP,LIPT);
这会将总和保存在 localStorage 中的单独键中。在您的情况下,我假设您只想将所有键和值对存储在一个键中,该键位于 localStorage中tot
,那么. 在下面试试这个:tot
array of objects
function sumFood (tot,tab_cout){
let total = 0;
for (let i=0; i<tab_cout.length;i++) {
total += Number(tab_cout[i])
}
const savedTot = JSON.parse(localStorage.getItem('tot')) || []
const addedTot = savedTot.push({ [`${tot}`]: total })
localStorage.setItem('tot', JSON.stringify(addedTot))
}
sumFood(GLC,GLCT)
sumFood(LIP,LIPT)
// 如果GLC
和LIP
是变量,否则你应该把它们放在字符串中。像这样:
sumFood('GLC',GLCT)
sumFood('LIP',LIPT)
然后稍后检索它:
const getTot = JSON.parse(localStorage.getItem('tot')) || []
console.log(getTot) // you will see your expected output
推荐阅读
- javascript - 使用 Visual Studio Code 从对象值中删除尾随空格
- sql - How do I find related rows in Oracle SQL db
- c - C: ??? is being add to my strings outside of the sizeof(string)
- elasticsearch - Why elasticsearch returns too different results for the same query on different indices?
- ios - How to get current request connect server ip addres
- java - How to collect user entered variables for database storage
- vue.js - 如何将 javascript 标签文件添加到 Vue
- javascript - Javascript - is an anonymous function used as a callback created multiple times?
- python - 如何将这些输出转换为矩阵格式
- javascript - For a positive integer n, is Math.random()*n >= n possible?