伙计们,我有一个大问题,我已经尝试解决了好几天。我有一个纠缠的JSON对象(http://ddragon.leagueoflegends.com/cdn/9.1.1/data/de_DE/runesReforged.json),例如,其中有我的ID的数组。
0: 8214 1: 8112 2: 8005 3: 8010 4: 8112 5: 8359 6: 8437 7: 9923 8: 8112 9: 8021
我想在json对象中借助此数组搜索id。匹配之后,应返回“ icon”的内容,
但我不知道如何:(
我尝试了很多方法,但是我没有想要的结果。该ID在the_json_object[0].slots[0].runes[0].id
下
我读到您可以使用递归函数来解决它,但是我尝试了但没有得到期望的结果。
也许你们可以帮助我:)我将非常感谢
答案 0 :(得分:1)
如果我对您的理解正确,则可以执行以下大致操作:
var ids = [8214,8112,8005,8010,8112,8359,8437,9923,8112,8021];
var results = [];
ids.map(function(id) {
results.push({key: id, icon: ''});
});
然后给定对象,您可以将其映射为以下对象的子对象:
the_json_object.map(function(item){
item.slots.map(function(slot){
slot.runes.map(function(rune){
if(ids.indexOf(rune.id) != -1) {
results.map(function(result){
if(result.key == rune.id) result.icon = rune.icon;
});
}
});
});
});
var icons = [];
results.map(function(result){
icons.push(result.icon);
});
记录图标对象将为您提供图标的字符串数组,如下所示:
["perk-images/Styles/Domination/Electrocute/Electrocute.png", "perk-images/Styles/Domination/HailOfBlades/HailOfBlades.png", "perk-images/Styles/Inspiration/Kleptomancy/Kleptomancy.png", "perk-images/Styles/Precision/PressTheAttack/PressTheAttack.png", "perk-images/Styles/Precision/FleetFootwork/FleetFootwork.png", "perk-images/Styles/Precision/Conqueror/Conqueror.png", "perk-images/Styles/Resolve/GraspOfTheUndying/GraspOfTheUndying.png", "perk-images/Styles/Sorcery/SummonAery/SummonAery.png"]
希望这会有所帮助。
马特
答案 1 :(得分:0)
我认为合适的方法是对数据进行排序。您可以通过拆分字符串来做到这一点。 如果您根据空格分割字符串,则可以获得键值对。 例如来自字符串*
0:8214 1:8112 2:8005 3:8010 4:8112 5:8359 6:8437 7:9923 8:8112 9:8021
var res = str.split(" ");
如果用空格分割,它将为您提供键值对,从中可以形成对象列表,并且可以轻松地从中进行搜索。答案 2 :(得分:0)
如果您想要一个带有所有所需图标的平面阵列,则可以使用以下内容:
let the_runes = [ 8214, 8112, 8005 /* ... */ ];
let the_icons = [];
for (let first_level_obj of the_json_object) {
for (let slot_obj of first_level_obj.slots) {
for (let rune_obj of slot_obj.runes) {
if (the_runes.includes(rune_obj.id)) {
the_icons.push({
id: rune_obj.id,
icon: rune_obj.icon
});
}
}
}
}
the_icons
数组将保存具有id
及其对应的icon
作为其属性的对象。