У меня есть файл JSON со свойством data, который содержит объекты, содержащие информацию о чемпионах.Как получить чемпион с определенным свойством KEY? - PullRequest
2 голосов
/ 12 июня 2019

У меня есть огромный статический файл JSON, который содержит всех чемпионов в определенной игре и некоторую информацию о них.В настоящее время мне нужно выяснить, как найти объект-чемпион, у которого свойство "key" равно 266. К сожалению, мне сложно понять, как получить этот объект.Я предполагаю, что мне нужно циклически проходить через объекты, однако, обычно, когда я зацикливаюсь на чем-то, это массив, но это не тот случай.

Ниже я привел упрощенный пример структуры json.У меня есть целое число 266, и теперь мне нужно каким-то образом получить доступ к объекту с помощью «ключа»: «266», который будет 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"
    }
}

Ответы [ 3 ]

1 голос
/ 12 июня 2019

Вы можете использовать поиск

  • Получить записи из ключа данных, используя Object.entries
  • Найдите значение, свойство ключа которого равно желаемому ключу, используя find

let 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 Nine-Tailed Fox"}}}

let findByKey = (matchKey) => Object.entries(obj.data).find(([key,value]) => value.key === matchKey)

console.log(findByKey('266'))
0 голосов
/ 12 июня 2019

Вы также можете использовать 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"
    }
}
}
0 голосов
/ 12 июня 2019

Вот общая функция, которую вы можете использовать для поиска любого ключа и значения:

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 Nine-Tailed Fox"}}}

const searchKeyValue = {key:"key", value:"266"}
const search = data => skv => Object.entries(data).filter(([key,value])=>value[skv.key]===skv.value)

console.log(search(obj.data)(searchKeyValue))

Так что вы можете найти, например, через. searchKeyValue = {key:"id", value:"Ahri"} или что угодно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...