【问题标题】:sorting alpha numeric with numbers [closed]用数字排序字母数字[关闭]
【发布时间】:2020-11-03 19:44:27
【问题描述】:

我正在寻找用 lodash 对字母数字进行排序并编写以下函数,我对两种类型都使用通用函数(排序字母和排序字母数字)

 import sortBy from 'lodash/sortBy';

 export const SecondaryQueryExecutor = ({ query, updateState, isJsonData }) => {
  const { loading, data, errorRedirect: error } = useSectionQuery(query, null, isJsonData);
  updateState(draft => {
    draft.loading = { ...draft.loading, [query.resultFieldName]: loading };
  });
  updateState(draft => {
    draft.queryResults = {
      ...draft.queryResults,
      [query.resultFieldName]: sortBy(data, o => o.name) // this is where I applied sorting
    };
  });
  return error || null;
};

但是这种排序看起来不起作用,它的排序如下所示

谁能告诉我如何使用上述值实现字母数字排序,并且还需要解决字母排序问题。

提前非常感谢!!!

【问题讨论】:

  • 数组无效
  • 1) 您的屏幕截图(不鼓励在 SO 上使用屏幕截图:请在可能的情况下复制/粘贴 文本)显示“字母排序”工作正常。 2)屏幕截图中的值确实 NOT 似乎与您的数组中的值匹配。为什么? 3) 该数组甚至不是 JSON/Javascript 值。为什么? 4)您可以按数字排序,也可以按字典顺序排序。任你选择:但选择其中一个。
  • 预期输出是什么?
  • 抱歉误导我将删除该数组,以便仅屏幕截图有效

标签: javascript reactjs sorting lodash alphanumeric


【解决方案1】:

如果你想按数字排序...那么你需要排序数字,而不是文本!

建议:

  1. 将您的值(数字值!)存储在一个数组中。示例:[2,-1,4]
  2. 对数组进行排序。示例:[-1, 2, 4]
  3. 一次读取排序数组一个元素并格式化该值。示例:let s = '+/-' + a[i] + '"';

【讨论】:

  • 我无法修改数组,因为它来自数据库,就像"
  • 老兄——你不能只逐字逐句地把一个字符串神奇地排序为一个数字。邪猴给了一个很好的例子above。它使用正则表达式来提取值,然后按值排序。另一种方法是从数据库中读取数值后立即解析出数值,然后将数字存储在数组中(而不是文本)。但是您需要对“原始”、显然是从数据库中获取的文本数据进行一些工作!
猜你喜欢
  • 2017-06-01
  • 2017-06-05
  • 2021-12-20
  • 2015-06-22
  • 2018-09-15
  • 2023-03-08
  • 2014-05-05
  • 2013-10-05
相关资源
最近更新 更多