Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么此排序函数没有返回到原始顺序?_Javascript_Reactjs - Fatal编程技术网

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在结束问题之前,您是否可以至少留下评论。你提出的老问题根本解决不了我的问题。在旧案例中,我没有结束你的旧问题,我也没有完全阅读它,因为它已经结束了。然而,如果我意识到,我在五分钟内看到封闭式问题的回复,而旧的问题被删除,因此我无法检查,我是否只是收到垃圾邮件,我认为我是。