在sessionStroage中,
密钥: 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;
}
}它可以工作,但它有点复杂,不直观,有没有更好的方法来做到这一点?
任何意见都可以,谢谢。
发布于 2017-12-20 06:33:53
您可以通过使用简单的ForEach method.The 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))
发布于 2017-12-20 06:29:20
你可以用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);
这将更新arr本身中的值,然后将其转换为字符串并存储到sessionStorage中。
发布于 2017-12-20 06:31:50
如果应用程序允许,您可以将该值存储为object而不是Array,然后只需按键查找该项:
键: qq值:{ "javascript":800,"python":600,"html":300 }
在从存储和解析中提取它之后,它将是:
var ss = JSON.parse(sessionStorage.getItem('qq'));
ss.python = 1000;https://stackoverflow.com/questions/47899949
复制相似问题