Как таковые, ваши данные немного странные. У вас есть и объект с цифрами c ключей, который предполагает, что это должен быть массив. Сказав, что вы все еще можете искать через Object.values
, чтобы получить данные, которые вы хотите.
let data = {"olis characters": {"0": {"name": "Farah","class": "rogue","level": 74},"1": {"name": "Grop","class": "paladin","level": 31},"2": {"name": "Skolmr","class": "druid","level": 85,}},"chris characters": {"0": {"name": "Trygve","class": "bard","level": 28},"1": {"name": "Brusi","class": "rogue","level": 10},"2": {"name": "Steini","class": "skald","level": 58}}}
function findChar(name, data) {
for (let charGroup of Object.values(data)) {
let found = Object.values(charGroup).find(char => char.name === name)
if (found) return found
}
}
console.log(findChar('Grop', data))
console.log(findChar('Brusi', data))
// will return undefined if the name is not there:
console.log(findChar('Mark', data))
Если вы изменили модель данных на простой массив, например:
let data = {
"olis characters": [{
"name": "Farah",
"class": "rogue",
"level": 74
},
{
"name": "Grop",
"class": "paladin",
"level": 31
}
],
"chris characters": [{
"name": "Trygve",
"class": "bard",
"level": 28
},
// ...
]
}
... вы можете избежать одного из этих Object.values
и использовать поиск напрямую.
function findChar(name, data){
for (let charGroup of Object.values(data)){
let found = charGroup.find(char => char.name === name)
if (found) return found
}
}