У меня есть этот код, сортирующий, фильтрующий и отображающий список всех вещей с помощью 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 Умезавы" отсутствует, когда я фильтрую по Артефакту.