Javascript 我有一个带有数据属性的JSON文件,其中包含包含冠军信息的对象。如何使用特定的密钥属性获得冠军?
我有一个巨大的静态JSON文件,其中包含某个游戏中的所有冠军以及他们的一些信息。目前,我需要弄清楚如何找到“key”属性为266的champion对象。可悲的是,我很难弄清楚如何得到那个物体。我假设我必须遍历对象,但是,通常当我遍历某个对象时,它是一个数组,但事实并非如此 我在下面给出了一个json结构的简化示例。我有一个整数266,现在我需要以某种方式访问带有“key”的对象:“266”应该是Aatrox。我该怎么做有什么线索吗Javascript 我有一个带有数据属性的JSON文件,其中包含包含冠军信息的对象。如何使用特定的密钥属性获得冠军?,javascript,json,object,Javascript,Json,Object,我有一个巨大的静态JSON文件,其中包含某个游戏中的所有冠军以及他们的一些信息。目前,我需要弄清楚如何找到“key”属性为266的champion对象。可悲的是,我很难弄清楚如何得到那个物体。我假设我必须遍历对象,但是,通常当我遍历某个对象时,它是一个数组,但事实并非如此 我在下面给出了一个json结构的简化示例。我有一个整数266,现在我需要以某种方式访问带有“key”的对象:“266”应该是Aatrox。我该怎么做有什么线索吗 "data": { "Aatrox": {
"data": {
"Aatrox": {
"version": "8.19.1",
"id": "Aatrox",
"key": "266",
"name": "Aatrox",
"title": "the Darkin Blade"
},
"Ahri": {
"version": "8.19.1",
"id": "Ahri",
"key": "103",
"name": "Ahri",
"title": "the Nine-Tailed Fox"
}
}
你可以用find
- 使用
对象从数据键获取条目。条目
- 使用
Find
let obj={“data”:{“Aatrox”:{“version”:“8.19.1”,“id”:“Aatrox”,“key”:“266”,“name”:“Aatrox”,“title”:“Darkin刀片”},“Ahri”:{“version”:“8.19.1”,“id”:“Ahri”,“key”:“103”,“name”:“Ahri”,“title”:“九尾狐”}}
让findByKey=(matchKey)=>Object.entries(obj.data).find(([key,value])=>value.key==matchKey)
console.log(findByKey('266'))
这里有一个通用函数,可用于搜索任何键和值:
const obj={“data”:{“Aatrox”:{“version”:“8.19.1”,“id”:“Aatrox”,“key”:“266”,“name”:“Aatrox”,“title”:“the Darkin Blade”},“Ahri”:{“version”:“8.19.1”,“id”:“Ahri”,“key”:“103”,“name”:“Ahri”,“title”:“the九尾狐”}}
const searchKeyValue={key:“key”,value:“266”}
const search=data=>skv=>Object.entries(data).filter(([key,value])=>value[skv.key]==skv.value)
log(search(obj.data)(searchKeyValue))
您也可以使用JSONPath,即
$..data[?(@.key==266)]
假设:
{"data": {
"Aatrox": {
"version": "8.19.1",
"id": "Aatrox",
"key": "266",
"name": "Aatrox",
"title": "the Darkin Blade"
},
"Ahri": {
"version": "8.19.1",
"id": "Ahri",
"key": "103",
"name": "Ahri",
"title": "the Nine-Tailed Fox"
}
}
}
性能重要吗?我只是为了学习而做这个项目,所以这不是一个真正的项目,但如果我想学习一些东西,最好是正确地做,对吗?对于大多数事情来说,拥有一个大的JSON文件可能是一个糟糕的开始;)但当这是您想要或必须使用的工具时,有一些工具可以对性能产生重大影响。例如,您可以使用流式JSON解析器,而不是读取整个文件,解析所有内容,然后在数据上循环。例如