在会话存储中,
关键:qq
值:[{“javascript”:800},{“python”:600},{“html”:300}]
我将对其进行一些更改,例如,只需将qazxsw pi更改为1000(我不知道它在数组中的顺序)
模拟代码
python
这就是我的尝试
// set storage
sessionStorage.setItem('qq', JSON.stringify([{'javascript': 800}, {'python': 600}, {'html': 300}]));
// get from storage
var ss = JSON.parse(sessionStorage.getItem('qq'));
它有效,但它有点复杂而且不直观,有没有更好的方法呢?
任何意见都可以,提前谢谢。
你可以通过使用简单的// for-loop to update value to 'python'
for (var i in ss) {
if (Object.keys(ss[i])[0] === 'python'){
ss[i][Object.keys(ss[i])[0]] = 1000;
}
}
方法实现这一点.forEach()方法为每个数组元素执行一次提供的函数。
ForEach
你可以使用var ss = [{'javascript': 800}, {'python': 600}, {'html': 300}]
console.log("Before "+JSON.stringify(ss))
ss.forEach(function(element) {
if(Object.keys(element) == 'python'){
element['python'] = 1000;
}
});
console.log("After "+JSON.stringify(ss))
。
Array#find
arr.find(obj => obj.hasOwnProperty('python')).python = 1000;
这将更新var arr = [{'javascript': 800}, {'python': 600}, {'html': 300}];
arr.find(obj => obj.hasOwnProperty('python')).python = 1000;
console.log(arr);
本身的值,然后可以将其转换为字符串并存储到sessionStorage中。
如果您的应用允许,您可以将值存储为arr
而不是object
,然后只需按键查找项目:
key:qq value:{“javascript”:800,“python”:600,“html”:300}
将它从存储中拉出并解析后,它将是:
Array