首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用名称排序数组?

如何用名称排序数组?
EN

Stack Overflow用户
提问于 2021-09-06 08:41:05
回答 2查看 129关注 0票数 0

我正在尝试用名称对对象数组进行排序。

工作片段:

代码语言:javascript
复制
const data = [
   {
      "title":"Smart S",
      "tariff_id":"1301"
   },
   {
      "title":"Smart M",
      "tariff_id":"1306"
   },
   {
      "title":"Smart L",
      "tariff_id":"1303"
   },
   {
      "title":"Start",
      "tariff_id":"1304"
   },
   {
      "title":"Smart  6",
      "tariff_id":"1305"
   },
   {
      "title":"Ausland",
      "tariff_id":"888888",
   },
   {
      "title":"Länderzone",
      "tariff_id":"999999",
   }
];

//Filtering the data by removing the unwanted data
const newTariffs = (data || []).filter((tariff) =>
          tariff?.tariff_id != 888888 && tariff?.tariff_id != 999999
);

// Need to sort in this order
const tariffOrder = ["Start", "Smart S", "Smart M", "Smart L", "Smart 6"]; 

//Sort code that have been tried
const sortedTariffs = (newTariffs || []).sort((a, b) =>
    tariffOrder.indexOf(a.title) > tariffOrder.indexOf(b.title) ? 1 : -1
);


console.log("sortedTariffs ", sortedTariffs);

从上面的数据来看,要求是,

->需要删除两个id最高的项,即.、888888999999 (已使用的筛选方法)

然后,->需要根据关税订单对新筛选的数组进行排序,

"Start", "Smart S", "Smart M", "Smart L", "Smart 6"

当前结果:

[{"title":"Smart 6","tariff_id":"1305"},{"title":"Start","tariff_id":"1304"},{"title":"Smart S","tariff_id":"1301"},{"title":"Smart M","tariff_id":"1306"},{"title":"Smart L","tariff_id":"1303"}]

预期结果:

[{"title":"Start","tariff_id":"1304"},{"title":"Smart S","tariff_id":"1301"},{"title":"Smart M","tariff_id":"1306"},{"title":"Smart L","tariff_id":"1303"}, {"title":"Smart 6","tariff_id":"1305"}]

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-06 08:54:50

您需要像这样更改顺序以获得升序或排序。

代码语言:javascript
复制
var sortedTariffs = newTariffs.sort((a, b) =>
    (a.title < b.title) - (a.title > b.title)
);
票数 1
EN

Stack Overflow用户

发布于 2021-09-06 08:43:35

按标题排序:

代码语言:javascript
复制
const sortedTariffs = (newTariffs || []).sort((a, b) =>
    a.title.localeCompare(b.title)
);

localeCompare将比较两个字符串并返回-1或1,正如排序所期望的那样。

编辑:

再看完这个问题后,我误解了他的意思。您遇到的问题是字符串"Smart 6“有两个空格而不是1个,所以indexOf()返回-1,并且放在第一个位置

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69071630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档