Javascript 为什么此排序函数没有返回到原始顺序?
我得到了一个排序函数Javascript 为什么此排序函数没有返回到原始顺序?,javascript,reactjs,Javascript,Reactjs,我得到了一个排序函数productList | | filteredInfos是从父组件传递下来的数据数组 const sortItems = (data) => { let priceArray = []; if (filteredState === true) { priceArray = filteredInfos; } else { priceArray = productList; } if (data === '
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
状态。排序价格low-high
和high-low
正在工作,但在else
语句中,我相信我已将此数据更改回原始顺序。
但else语句不起作用。数据总是按价格高低
或高低
下面是我如何呈现数据的
<FlatList
//bikelist is the data from productList || filteredInfos
data={bikeList}
renderItem={renderItem}
keyExtractor={(item, index) => String(index)}
style={styles.arrayListMargin}
/>
字符串(索引)}
style={style.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);
};
无法检查几分钟前(现在已删除)的非常类似的封闭式问题是否存在差异,这里是否存在差异?有人能解释一下为什么这个问题变得-。旧问题已被删除,因为有人建议的答案本身无法解决问题。
priceArray=productList
没有复制productList
@ASDFGerte在结束问题之前,您是否可以至少留下评论。你提出的老问题根本解决不了我的问题。在旧案例中,我没有结束你的旧问题,我也没有完全阅读它,因为它已经结束了。然而,如果我意识到,我在五分钟内看到封闭式问题的回复,而旧的问题被删除,因此我无法检查,我是否只是收到垃圾邮件,我认为我是。