在sessionStroage中,
key:qq
值:[{“javascript”:800},{“python”:600},{“html”:300}]
我会对其进行一些更改,例如,只需将python
更改为1000(我不知道它在数组中的顺序)
模拟代码
// 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;
}
}
它有效,但它有点复杂而且不直观,有没有更好的方法呢?
任何意见都没问题,非常感谢。
答案 0 :(得分:3)
您可以使用Array#find
。
V
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中。
答案 1 :(得分:3)
您可以使用简单的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))
答案 2 :(得分:2)
如果您的应用允许,您可以将值存储为object
而不是Array
,然后只需按键查找项目:
键:qq 价值:{" javascript":800," python":600," html":300}
将其从存储中取出并解析后,它将是:
var ss = JSON.parse(sessionStorage.getItem('qq'));
ss.python = 1000;