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

问题描述 投票:1回答:3

在会话存储中,

关键: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'));

它有效,但它有点复杂而且不直观,有没有更好的方法呢?

任何意见都可以,提前谢谢。

javascript arrays json
3个回答
3
投票

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

3
投票

你可以使用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中。


2
投票

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

key:qq value:{“javascript”:800,“python”:600,“html”:300}

将它从存储中拉出并解析后,它将是:

Array
© www.soinside.com 2019 - 2024. All rights reserved.