在嵌套值上过滤JSON?

时间:2019-05-05 14:17:30

标签: javascript json filter

我在这里获得了此代码,用于对带有type_line“ Artifact”的所有事物列表进行排序,过滤和映射。但是,当我尝试通过嵌套值进行过滤时,事情就崩溃了。这是有效的代码:

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')

我得到一个错误,说它期望合法性和年份之间存在逗号。我敢肯定这很简单,但我将不胜感激!

编辑:我也刚刚注意到地图仅显示了一半的结果?这很奇怪...例如,当我按Artifact进行过滤时,缺少“ Umezawa's Jitte”卡。

0 个答案:

没有答案