Javascript 是否有一种快速的方法来迭代JSON对象,将每个对象的标题更改为其中一个值';什么是关键价值观?
例如,如果我有这样一个JSON对象:Javascript 是否有一种快速的方法来迭代JSON对象,将每个对象的标题更改为其中一个值';什么是关键价值观?,javascript,json,Javascript,Json,例如,如果我有这样一个JSON对象: { "28595": { "displayProperties": { "description": "I wish to be strategic.", "name": "Helm of the Great Hunt", "icon": "/common/destiny2_content/icons/c9ff2846a1474f315305e4f9bc413b2e.jpg", "hasIcon":
{
"28595": {
"displayProperties": {
"description": "I wish to be strategic.",
"name": "Helm of the Great Hunt",
"icon": "/common/destiny2_content/icons/c9ff2846a1474f315305e4f9bc413b2e.jpg",
"hasIcon": true
},
"scope": 1,
"sourceString": "Source: Last Wish raid.",
"sourceHash": 2455011338,
"itemHash": 2274520361,
"acquisitionInfo": {
"runOnlyAcquisitionRewardSite": false
},
"stateInfo": {
"requirements": {
"entitlementUnavailableMessage": "Requires Destiny 2: Forsaken"
}
},
"presentationInfo": {
"presentationNodeType": 2,
"parentPresentationNodeHashes": [
1847361717,
558738844
],
"displayStyle": 3
},
"hash": 28595,
"index": 686,
"redacted": false,
"blacklisted": false
},
"637236": {
"displayProperties": {
"description": "I wish to be wise.",
"name": "Hood of the Great Hunt",
"icon": "/common/destiny2_content/icons/b70e19e236a3cfd0fc762be6f2d226d9.jpg",
"hasIcon": true
},
"scope": 1,
"sourceString": "Source: Last Wish raid.",
"sourceHash": 2455011338,
"itemHash": 3251351304,
"acquisitionInfo": {
"runOnlyAcquisitionRewardSite": false
},
"stateInfo": {
"requirements": {
"entitlementUnavailableMessage": "Requires Destiny 2: Forsaken"
}
},
"presentationInfo": {
"presentationNodeType": 2,
"parentPresentationNodeHashes": [
1375933816,
282080253
],
"displayStyle": 3
},
"hash": 637236,
"index": 1202,
"redacted": false,
"blacklisted": false
}
}
有没有一种快速方法可以让我遍历每个对象(28595
&637236
),并用sayitemHash
的值替换对象标题
因此,我的第一个对象标题将更改为2274520361
,第二个对象标题将更改为3251351304
它必须循环遍历整个文件,因为它大约有112000行长,因此我需要一个脚本来循环遍历数据,但我不知道如何创建一个脚本
之所以要这样做,是因为我在应用程序中使用项目哈希来引用每个对象,但这个JSON数据不像我在应用程序中使用的其他数据那样使用标准项目哈希
编辑:
最好我希望在编写React应用程序时使用JavaScript完成此操作,但该文件存储在本地,并通过一个
const
引用,因此,如果有一种方法可以使用另一种语言来完成此操作,那么只需使用更新后的文件,我会全神贯注,并愿意在之前提供它,假设a是您的JSON。记住,a必须是let或var
for (const key in a) {
if (a.hasOwnProperty(key)) {
a[a[key]["itemHash"]] = a[key];
delete a[key];
}
}
简单for循环可用于创建新对象。建议检查重复的itemHash值,以防万一。此外,最好使用新对象,而不是改变原始对象,以避免一些边缘情况问题
var result={},obj={“28595”:{“displayProperties”:{“description”:“我希望具有战略意义”,“name”:“伟大狩猎的掌舵人”,“icon”:“/common/destiny2_content/icons/c9ff2846a1474f315305e4f9bc413b2e.jpg”,“hasIcon”:true},“scope”:1,“sourceString”:“Source:Last wish raid.”,“sourceHash”:2455011338,“itemHash”:2274520361,“acquisitionInfo”:{“runOnlyAcquisitionRewardSite”:false},“stateInfo”:{“需求”:{“权利不可用消息”:“需要命运2:被抛弃”},“呈现信息”:{“呈现节点类型”:2,“父代呈现节点类型”:[1847361717558738844],“显示样式”:3},“哈希”:28595,“索引”:686,“编辑”:false,“黑名单”:false},“637236”:{“显示属性”:description:“我希望明智。”,“name:“伟大狩猎的胡德”,“icon:”/common/destiny2_content/icons/b70e19e236a3cfd0fc762be6f2d26d9.jpg”,“hasIcon”:true},“scope”:1,“sourceString:“Source:遗愿raid.”,“sourceHash”:2455011338,“itemHash”:3251351304,“acquisitionInfo:{“runnlyacquisitionrewardsite”:false},“stateInfo:{”要求:{”AuthenticationUnavailableMessage:“Required Destiny 2:Forsaken”},“presentationInfo:{“presentationNodeType”:2,“ParentPresentationNodeHash:[1375933816282080253],“displayStyle”:3},“hash”:637236,“index”:1202,“redacted”:false,“Blacklist”:false}
for(obj中的var键)
if(obj[key].itemHash在结果中)
console.log('replicate itemHash value:',obj[key].itemHash)
其他的
结果[obj[key].itemHash]=obj[key]
console.log(result)
您应该指定您希望使用的编程语言或技术。我已经更新了我的问题,感谢tipStackoverflow并不是为了让其他人为您进行编程。您应该首先尝试开发脚本,如果无法正确使用,您可以询问它有什么问题。