尝试按街道地址对对象数组进行排序,但排序又回来了,不知道如何调整我的逻辑以正确排序

我有一个 React/TypeScript 组件,我试图按其街道地址以升序或降序对一组 Location 对象进行排序。


现在我有一个简单的内联排序函数,它比较街道地址值,并根据选择是升序(a > b)还是降序(b > a)它比较并按该顺序返回列表。


我遇到的无法预料的问题是,由于街道地址属性以字符串形式返回,我认为门牌号的数值没有被正确比较,因此我的列表以看似随机排序的排序返回。


例如升序将返回:


13151 LAKE SHORE DR


2001 ROGER ST S


5101 SHANNON AVE S STE 2B


2001 ROGER S ST STE B2


10520 ITALY S AVE

我想象的预期回报将是所有以门牌号 1 开头的地址,然后是 2 号、3 号等等。


这就是我的排序函数现在的样子:


// Function for asccending order

    if (sort === 'alphaAsc') {

      filteredLocations = filteredLocations.sort((a, b) =>

        a.addressLine1 > b.addressLine1 ? 1 : 0

      );

    }



// Function for descending sort

    if (sort === 'alphaDesc') {

      filteredLocations = filteredLocations.sort((a, b) =>

        b.addressLine1 > a.addressLine1 ? -1 : 0

      );

    }


森栏
浏览 113回答 2
2回答

喵喔喔

像这样的东西应该工作:// Function for asccending order&nbsp; &nbsp; if (sort === 'alphaAsc') {&nbsp; &nbsp; &nbsp; filteredLocations = filteredLocations.sort((a, b) =>&nbsp; &nbsp; &nbsp; &nbsp; a.addressLine1 > b.addressLine1 ? 1 : a.addressLine1 < b.addressLine1 ? -1 : 0&nbsp; &nbsp; &nbsp; );&nbsp; &nbsp; }// Function for descending sort&nbsp; &nbsp; if (sort === 'alphaDesc') {&nbsp; &nbsp; &nbsp; filteredLocations = filteredLocations.sort((a, b) =>&nbsp; &nbsp; &nbsp; &nbsp; b.addressLine1 > a.addressLine1 ? -1 : a.addressLine1 < b.addressLine1 ? 1 : 0&nbsp; &nbsp; &nbsp; );&nbsp; &nbsp; }

慕森王

对于每个过滤器函数,如果对象 b 应位于对象 a 之前,则返回 1,如果对象 a 应位于对象 b 之前,则返回 -1,如果对象的顺序正确,则返回 0。if (sort === "alphaAsc") {&nbsp; filteredLocations = filteredLocations.sort((a, b) => {&nbsp; if (a.addressLine1 < b.addressLine1) return -1;&nbsp; if (a.addressLine1 > b.addressLine1) return 1;&nbsp; return 0;&nbsp; });};if (sort === "alphaDesc") {&nbsp; filteredLocations = filteredLocations.sort((a, b) => {&nbsp; if (a.addressLine1 > b.addressLine1) return -1;&nbsp; if (a.addressLine1 < b.addressLine1) return 1;&nbsp; return 0;&nbsp; });};
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript