查询JSON文件以获取数组中的位置
Querying a JSON file to get position in array
我正在尝试查询一个JSON文件来设置数组的位置。例如,我的JSON文件的一个片段显示在下面:
{ "result": [{
"summonerLevel": "0",
"summonerID": "0",
"summonerName": "",
"summonerIcon": "0"
}, {
"summonerLevel": "30",
"summonerID": "76767383",
"summonerName": "Solminor",
"summonerIcon": "916"
}, {
"summonerLevel": "30",
"summonerID": "25470907",
"summonerName": "Dahid",
"summonerIcon": "959"
}, {
"summonerLevel": "30",
"summonerID": "72118343",
"summonerName": "Truehaven",
"summonerIcon": "956"
}]
}
目前,我已经将数组的位置硬编码为1,返回"Solminor"级别,即"30":
dbsummonerLevel = json.result[1].summonerLevel;
我已经在我的html页面上显示了这个变量:
document.getElementById("sLevel").innerHTML = dbsummonerLevel;
我想替换[1]的数组位置,以返回与用户键入的"summonerName"
相关联的所有元素。
例如。用户键入"Dahid"
,我希望阵列位置在[2]或"Truehaven"
,以将阵列位置设置为[3]
编辑:我想补充一点,我的JSON数据在一个单独的php文件中,并且一直在从mysql数据库更新,我无法将JSON文件存储在我的javascript中,我不认为。
使用.filter,返回的是仅包含该函数返回true的元素的新数组。
var summonersWithName = json.filter(function (summoner){
summoner.summonerName === NAME_THE_USER_TYPED_IN
})
您可以创建类似的自定义函数
function findIndexBy(property, value) {
return this.findIndex(item => item[property] === value);
}
并将其用作
findIndexBy.call(arr, 'summonerName', 'Dahid');
为了方便起见,您可以将其添加到阵列原型中。但不建议使用,因为如果该语言使用此方法名称,可能会发生冲突。
Array.prototype.findIndexBy = function findBy(property, value) {
return this.findIndex(item => item[property] === value);
}
arr.findIndexBy('summonerName', 'Dahid');
如果想要整个对象而不是索引,请将findIndex
仅替换为find
。
这样的东西来获取数据
function getSummonerData(name, data) {
for (var i = 0; i < data.result.length; i++) {
if (data.result[i].summonerName === name) {
return data.result[i];
}
}
}
var data = {
"result": [{
"summonerLevel": "0",
"summonerID": "0",
"summonerName": "",
"summonerIcon": "0"
}, {
"summonerLevel": "30",
"summonerID": "76767383",
"summonerName": "Solminor",
"summonerIcon": "916"
}, {
"summonerLevel": "30",
"summonerID": "25470907",
"summonerName": "Dahid",
"summonerIcon": "959"
}, {
"summonerLevel": "30",
"summonerID": "72118343",
"summonerName": "Truehaven",
"summonerIcon": "956"
}]
};
console.log(getSummonerData("Truehaven", data));
结果:
{
"summonerLevel": "30",
"summonerID": "72118343",
"summonerName": "Truehaven",
"summonerIcon": "956"
}
然后你可以用召唤师数据做你想做的事
// Assuming 'userdata' is your initial object
function getDataByName(userdata, name){
if (typeof name !== "string") throw new Error("Wrong name!");
var userdata = userdata.result, len = userdata.length;
while (len--) {
if (userdata[len]['summonerName'] === name) {
return userdata[len];
}
}
return false;
}
var user = getDataByName(userdata, 'Dahid');
console.log(user);
// output: {summonerLevel: "30", summonerID: "25470907", summonerName: "Dahid", summonerIcon: "959"}
document.getElementById("sLevel").innerHTML = user.summonerLevel;
最终我决定根据用户输入创建一个JSON查询。因此,当用户输入一个用户ID时,它将形成一个MySql查询,该查询将构建一个特定于该用户ID的JSON文件。谢谢你们的帮助,伙计们,我很感激。
相关文章:
- 如何从某个位置顺时针和逆时针循环数组
- 将javascript数组中的项移动到特定位置的有效方法
- 生成ACF标记位置的数组(元素列表后缺少])
- 基于javascript中位置的数组差异
- Javascript删除数组中某个位置之后的项
- 在数组中迭代时的JS循环位置
- 在两个位置显示数组中的随机单词
- 放大位置数组
- Javascript 地理位置:将坐标存储在数组中
- 将地理位置坐标放入数组中
- 将地理编码器的位置保存到数组中
- 无法将所有位置值保存到我的数组中
- 如果用户靠近并触发特定事件,请检查位置数组
- 猫鼬位置数组更新
- 生成XSLT处理后的位置数组
- 如何在谷歌地图的位置数组中赋值
- 需要帮助合并2个位置数组和for循环
- 带有静态变量的地理位置数组
- 谷歌地图-从基于地图的位置数组中获取值'目前的观点
- 如何使用位置数组添加折线