Фильтровать JSON по вложенным значениям? - PullRequest
0 голосов
/ 05 мая 2019

У меня есть этот код, сортирующий, фильтрующий и отображающий список всех вещей с помощью type_line «Артефакт». Но когда я пытаюсь фильтровать по вложенному значению, все выходит из строя. Вот код, который работает:

function sortByKey(array, key) {
    return array.sort(function(a, b) {
        var x = a[key]; var y = b[key];
        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
    });
}

function TheCards() {
    let cardMasterList = require('./scryfall-oracle-cards.json')
    let cardMasterListSorted = sortByKey(cardMasterList, 'name')

    console.log(cardMasterList[0].name);
    console.log(cardMasterListSorted)

    return (
        <ul id="card-master-list">
                {cardMasterListSorted.filter(({type_line}) => type_line === 'Artifact').map(
                    (cardName) => {
                        return (
                            <li key={cardName.id}>
                                {cardName.name}
                            </li>
                        )
                    }
                )
            }
        </ul>
        )
}

Если я изменю строку фильтра на это:

{cardMasterListSorted.filter(({legalities.vintage}) => legalities.vintage === 'legal')

Я получаю сообщение об ошибке, говорящее, что он ожидает запятую между легальностью и винтажом. Я уверен, что это что-то простое, но я буду признателен за любую помощь!

Редактировать: Я также только что заметил, что карта показывает только половину результатов? Это странно ... например, карта "Jitte Умезавы" отсутствует, когда я фильтрую по Артефакту.

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