ソート問題(私は、私はちょうどここに、基本的なES6をめちゃくちゃだと思うが、それを見ていないです):並べ替えオブジェクトの配列が機能していない
は、私は、プロットの配列を持っている状態から入ってくるオブジェクト(実際には、フィルタが適用されているかどうかによって2つの配列のうちの1つです)。各オブジェクトには、プロパティとしてGeoJSON機能があります。私はまた、州から来る地図センターのプロパティを持っています。 MapStateToPropsでは、マップの中心からプロットの距離を返します(これが適切に動作することが確認されています)。次に、プロット配列をコピーし、プロットを中心からの距離でソートし、新しい配列を返します。しかし、悲しいことに、新しい配列は適切にソートされていません(順序はありません)。
私は行方不明を誰かが見ていますか?
function mapStateToProps(state) {
const distancetoCenter = (shape, props) => {
if (shape.feature && props.mapCenter) {
const theDistance = distance(
centroid(shape.feature).geometry.coordinates.reverse(),
point([props.mapCenter.lat, props.mapCenter.lng]),
{ units: 'kilometers' }
);
//console.log(`the distance to center of ${shape.name} is ${theDistance}`);
return theDistance;
}
};
const sortPlots = props => {
if (props.filteredPlots || props.plots) {
return (props.filteredPlots || props.plots).slice(0).sort((a, b) => {
distancetoCenter(b, props) - distancetoCenter(a, props);
});
}
};
const sortedPlots = sortPlots(state.plots);
return {
mapCenter: state.plots.mapCenter,
sortedPlots
};
}
ちょうどstateではなくstate.plotsでsortPlotsを呼び出しています。 – brub
@brubこれは、これらの配列がstate.plotsに存在するため、そうする必要があります。 –