为什么这个排序函数没有返回到原始顺序



我得到了一个排序函数。productList || filteredInfos是从父组件传递下来的数据数组

const sortItems = (data) => {
let priceArray = [];
if (filteredState === true) {
priceArray = filteredInfos;
} else {
priceArray = productList;
}
if (data === 'Price low - high') {
priceArray.sort(
(a, b) => a.discountedPriceWithDouble - b.discountedPriceWithDouble,
);
} else if (data === 'Price high - low') {
priceArray.sort(
(a, b) => b.discountedPriceWithDouble - a.discountedPriceWithDouble,
);
} else {
priceArray = productList;
}
setFilteredInfos(priceArray);
};

我不明白的是在if条件下。排序价格CCD_ 3&high-low正在工作,但在else语句中,我相信我已将此数据更改回原始顺序。但else的说法不起作用。数据总是按价格high-lowlow-high进行排序

以下是我如何渲染数据

<FlatList
//bikelist is the data from productList || filteredInfos
data={bikeList}
renderItem={renderItem}
keyExtractor={(item, index) => String(index)}
style={styles.arrayListMargin}
/>

您可以通过展开项来获得数组的副本。

const sortItems = (data) => {
const
directions = {
'Price low - high': 1,
'Price high - low': -1
},
order = directions[data];
priceArray = filteredState && order
? [...filteredInfos]
: [...productList],
if (order) {
priceArray.sort((a, b) => order * (a.discountedPriceWithDouble - b.discountedPriceWithDouble));
}
setFilteredInfos(priceArray);
};

最新更新