javascript - 更新对象数组中值的更好方法

标签 javascript arrays json

在sessionStroage中,

key : qq

value : [{"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;
    }
}

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

任何意见都可以,谢谢inadvanced。

最佳答案

您可以通过使用简单的 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))

关于javascript - 更新对象数组中值的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47899949/

相关文章:

php - 您可以在 Guzzle POST 正文中包含原始 JSON 吗?

javascript - 尝试模拟对象实例时,Sinon stub 不起作用

javascript - Highcharts 词云 - 为每个词建立链接

javascript - Bootstrap 的模式 - 单击取消按钮 - 触发 `close()` 或 `dismiss()` ?

javascript - 如何比较两个 JSON 具有相同的属性而无需排序?

Java Jackson 如何在序列化过程中解开原始值?

javascript - 将字符串作为元素插入到 javascript 的 DOM 中?

JavaScript 删除对象键值对中的数组括号

javascript - 数组在拼接后不会改变它的数据。范围问题?

字符数组操作