【问题标题】:Sort a list by the second number after a dot按点后的第二个数字对列表进行排序
【发布时间】:2020-06-27 07:51:06
【问题描述】:

我需要使用 JavaScript 按第二批号对列表进行排序。

这就是现在的样子:

1101.19
1201.17
1301.09

我需要的是:

1301.09
1201.17
1101.19

由于我仍在学习编程,我无法弄清楚问题所在。但在工作中需要它。

有人可以帮我理解如何做的过程吗?

【问题讨论】:

  • 对不起!编辑了帖子。我正在使用 JS
  • 这是一个数组吗? [“1101.19”、“1201.17”、“1301.09”]
  • 你会在数组上使用reverse 方法吗?像这样:[1101.19, 1201.17, 1301.09].sort().reverse().join('\n')
  • 所有数字的格式是否相同,或者您可以混合使用整数?它们是以字符串还是数字对象的形式出现的。您是否尝试过使用sort - 如果是,是什么阻止了您?
  • 点后面的部分是什么意思?它应该被解释为整数还是浮点值?

标签: javascript php sorting


【解决方案1】:

根据小数部分对数组进行排序。这是解决方案

通过在排序函数中选择数字的小数部分对数组进行排序。

您可以通过对 0.1 进行取模运算来获得任何数字的小数部分。 Link

const arr = [1101.19, 1201.17, 1301.09, 1201.20];
arr.sort((a, b) => {return (a % 1 - b % 1)});
console.log(arr);

【讨论】:

  • 数字还是字符串?
  • @Adriani6 哎呀,排序函数中出现了小错误。更正了。请检查
  • .sort 改变原始数组,因此不需要 arr2 或对数组的副本进行排序 [...arr].sort((a, b) => a % 1 - b % 1))
【解决方案2】:

您需要在排序之前拆分每个元素并比较第二部分

let array = ["1101.69", "1701.57", "1301.09"];
array.sort((a,b)=>{
  let pair1 = a.split('.');
  let pair2 = b.split('.');
  return ( parseInt(pair1[1]) < parseInt(pair2[1])) ? -1 : 1;
});
console.log(array);

【讨论】:

    猜你喜欢
    • 2021-05-03
    • 2018-04-07
    • 1970-01-01
    • 2012-06-29
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多