所以这让我头疼了很长时间:
{
"gravetender": {
"musicTokens": 2
},
"Bob-chan": {
"musicTokens": 3
}
}
我只是想将所有musicTokens
设置为5,无论名称如何。我已经尝试过forEach
和for in
。
这是目前更改单个用户的musicTokens
的原因:
client.profiles [message.author.username].musicTokens = 5;
我的client.profiles
是我的JSON,message.author.username
获得了名称,而.musicTokens
则指向了变量。
我正在寻找类似client.profiles.*.musicTokens = 5
谢谢
答案 0 :(得分:1)
使用Object.values()
和Array#forEach()
:
const client = {
"profiles": {
"gravetender": {
"musicTokens": 2
},
"Bob-chan": {
"musicTokens": 3
}
}
}
Object.values(client.profiles).forEach(profile => {
profile.musicTokens = 5
})
console.log(client.profiles)
答案 1 :(得分:1)
for(const profile of Object.values(client.profiles))
profile.musicTokens = 5;
答案 2 :(得分:0)
在潜在的第三方插件之外,没有JavaScript方式可以做到这一点。您必须像这样遍历它们
let userNames = Object.keys(client.profiles);
usernames.forEach(username => {
client.profiles[username].musicTokens = 5;
});
您可以使用Map
类在原处对其进行迭代
client.profiles.forEach(profile => profile.musicTokens = 5);
client.profiles = new Map(Object.entries(client.profiles));
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/forEach