首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新对象数组中值的更好方法

问更新对象数组中值的更好方法
EN

Stack Overflow用户
提问于 2017-12-20 06:26:05
回答 3查看 945关注 0票数 1

在sessionStroage中,

密钥: qq 值:{"javascript":800},{"python":600},{"html":300}

我将对它做一些修改,例如,只需将python更改为1000 (我不知道它在数组中的顺序)

模拟代码

代码语言:javascript
复制
// set storage
sessionStorage.setItem('qq', JSON.stringify([{'javascript': 800}, {'python': 600}, {'html': 300}]));

// get from storage
var ss =  JSON.parse(sessionStorage.getItem('qq'));

这就是我所尝试的

代码语言:javascript
复制
// 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;
    }
}

它可以工作,但它有点复杂,不直观,有没有更好的方法来做到这一点?

任何意见都可以,谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-12-20 06:33:53

您可以通过使用简单的ForEach method.The forEach()方法为每个数组元素执行提供的函数一次。

​

代码语言:javascript
复制
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))

​

票数 3
EN

Stack Overflow用户

发布于 2017-12-20 06:29:20

你可以用Array#find。

代码语言:javascript
复制
arr.find(obj => obj.hasOwnProperty('python')).python = 1000;

​

代码语言:javascript
复制
var arr = [{'javascript': 800}, {'python': 600}, {'html': 300}];
arr.find(obj => obj.hasOwnProperty('python')).python = 1000;
console.log(arr);

​

这将更新arr本身中的值,然后将其转换为字符串并存储到sessionStorage中。

票数 3
EN

Stack Overflow用户

发布于 2017-12-20 06:31:50

如果应用程序允许,您可以将该值存储为object而不是Array,然后只需按键查找该项:

键: qq值:{ "javascript":800,"python":600,"html":300 }

在从存储和解析中提取它之后,它将是:

代码语言:javascript
复制
var ss = JSON.parse(sessionStorage.getItem('qq'));

ss.python = 1000;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47899949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档