JavaScript配列フィルタを使用して、いくつかのオブジェクトの配列をキーワードでフィルタリングしています。初期、私はオブジェクトの配列だった:複数の値を持つ配列をフィルタリングする
let works = [
{ title: ' work 1', medium: 'tax1' },
{ title: ' work 2', medium: 'tax2' },
{ title: ' work 3', medium: 'tax3' },
{ title: ' work 4', medium: 'tax2' },
{ title: ' work 5', medium: 'tax1' }
]
をそして、このように「中」で配列をフィルタリングすることができます:私はmediumFilterへ分類変数を渡すと(
mediumFilter(taxonomy) {
return works.filter(item => {
return (
item.medium.indexOf(taxonomy) > -1
);
});
},
)、この場合は 'tax1'程度です - その特定の媒体を含むアイテムを含む配列を取得します。
これは私のプロジェクトがより複雑になった今、私は自分自身が苦労していた最初のものでした。新しい配列にはネストされた配列が含まれています。これはフィルタリングで一致する値です。
let works = [
{ title: ' work 1', medium: [ 'tax1', 'tax3' ] },
{ title: ' work 2', medium: [ 'tax1' ] },
{ title: ' work 3', medium: [ 'tax3' ] },
{ title: ' work 4', medium: [ 'tax2', 'tax1' ] },
{ title: ' work 5', medium: [ 'tax1' ] }
]
メディアが複数の文字列を保持する配列であることに注目してください。
私はこれにアプローチする方法についていくつかの援助を探しています。変数imと一致する項目を返す関数が必要です。いくつかの作品は複数のメディアを持つことができるため、複数の値でフィルタリングできる必要があります。媒体の配列に複数の値がある場合、一致する必要があるのは1つだけです。
ありがとうございます!
btw私は質問には関係ないvueを使用していますが、私の例の構文は正確ではないかもしれません。
この 'mediumFilter(['tax3'、 'tax2'])'の結果はどうでしょうか? – RomanPerekhrest
こんにちは - この段階では1つのカテゴリでしかフィルタリングできないので、関数に渡す変数は常に1つの文字列になります!それでも考慮することが非常に重要です – mmarquez