我在这里获得了此代码,用于对带有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”卡。