状態からPlotオブジェクトの配列を取得する接続されたReactコンポーネントがあります。React-Redux:状態からオブジェクトの配列をフィルタリングします。
また、状態からいくつかの文字列配列を取得します。このように各プロパティが文字列であることを...
{ name, variety, region, grower}
:
function mapStateToProps(state) {
return {
plots: state.plots.plots,
varietyFilter: state.plots.varietyFilter,
regionFilter: state.plots.regionFilter,
growerFilter: state.plots.growerFilter,
plotNameFilter: state.plots.plotNameFilter
};
}
各プロットは次のようになります。
これらのフィルタ配列に適切なプロパティがあるかどうかによって、プロットをフィルタリングしたいと考えています。
標準溶液は
const filteredArray = inputArray.filter(a => filterArray.indexOf(a.property)
私はこのアプローチを持っている三つの問題があるようなものを使用することです。まず、フィルター配列が空であれば、フィルタリングされた配列の要素は渡されませんが、それらはすべて通過します。次に、状態から表示されるフィルタ配列がまだ初期化されていない場合はどうなりますか? indexOfが使用できないため、エラーが発生します。第三に、私はこれらのフィルタメソッドを連鎖したいが、何らかのフィルタ配列が初期化されたものだけ連鎖したい。
これまでのところ、私はこれを作ってみた:
if (this.props.plots) {
filteredProps = this.props.plots.filter(function(plot) {
if (!varietyFilter.indexOf) {
return true;
}
return varietyFilter.indexOf(plot.variety) > -1;
});
}
ちょうどしかし、すべてを通過すると思われること。最初のreturn文を削除すると、コンポーネントが最初に初期化されたときにindexOfメソッドが存在しないというエラーが発生します。
したがって、2つの質問。まず、各オブジェクトの特定のプロパティが、状態に存在していても存在していない可能性のある文字列の配列に含まれているかどうかについて、オブジェクトの配列をフィルタリングするにはどうすればよいですか?次に、元の配列内のオブジェクトの異なるプロパティに対応する一連の配列に対して、これをどうやって行うのですか?あなたが行うことができ、filterArrayは空の配列の場合は、すべての要素を通過させるために、それがnullまたは未定義だ場合はエラーを防止するために
あなたがで作業している変数のそれぞれの代表的な値を提供していただけますか?私はプロットとフィルター?私はまだオブジェクトの配列を扱っているのか、配列を含むオブジェクトを扱っているのかはまだ分かりません。 – Jaxx