javascript - 数组有 5 个对象,每个对象都有另外 5 个对象的数组属性。我正在尝试创建查找具有 ID 的对象的函数
问题描述
首先,这是使用的 JSON 文件 - https://ddragon.leagueoflegends.com/cdn/9.14.1/data/en_US/runesReforged.json
目前我有这个函数,它允许我将特定的 id 作为参数并获取该数组中的 5 个主要对象之一:
findSummonerRune: (state) => (id) => {
let rune = state.summonerRunes.find(rune => rune.id == id);
return rune
}
所以findSummonerRune(8100)
返回第一个具有"key": "Domination"
属性的对象。但是,如果我尝试查找 id of 的符文8112
,它不起作用,因为该符文是一个子符文,可以在 id 的符文的属性中找到8100
。更具体地说,在slots
财产中。
现在我明白了为什么我的函数不起作用,它是用来查找主要 5 个对象中的哪一个具有属性 id == id,但是,我只是不确定如何也循环遍历它们的数组属性槽以查找其他符文也是如此。
解决方案
就个人而言,如果您想从 退货slots
,我会预先将我的清单展平:
state.flattenedRunes = state.summonerRunes.reduce((acc, rune) =>
acc.concat([rune], rune.slots.reduce((a, r) => a.concat(r.runes), [])), []);
我只是搜索那个列表
如果您想实际返回包含该项目的主对象slots
,那么执行此操作还可以检查您的查找中的子数组。
let rune = state.summonerRunes.find(rune => rune.id == id || rune.slots.find(slot => slot.runes.find(r => r.id == id)));
推荐阅读
- python - 如何使用身份验证 API 触发密码重置流程、python 或 curl
- java - Android套接字空异常
- moq - 在为自动模拟设置自定义 AutoDataAttribute 时,告诉 AutoFixture 忽略所有递归结构的正确语法是什么?
- pandas - 将单元格值替换为通过条件的单元格轴标签
- yii2 - 模块中的行动路线
- haskell - Haskell "h1>" 语法和科学单元检查
- mongodb - MongoDB数据库默认排序
- python - 在 numpy 数组中查找大于输入日期时间的条目
- c# - 为每种颜色创建图像的渐变
- javascript - WYSIHTML5 - 未填充文本输入