Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Arrays_Lodash - Fatal编程技术网

数组的JavaScript不区分大小写的泛型排序

数组的JavaScript不区分大小写的泛型排序,javascript,arrays,lodash,Javascript,Arrays,Lodash,我已经阅读了关于这个主题的前一个问题: 我发现lodash可以正确地对数字列和日期列进行排序。我需要对字符串列进行不区分大小写的排序。我们目前有以下实施: const sorted=u.orderBy(此函数为(o){ if($.isNumeric(o[列]){ 返回parseFloat(o[列]); } 返回(o[列]).toLowerCase(); },方向); 这个.clear(); for(设i=0;i

我已经阅读了关于这个主题的前一个问题:

我发现lodash可以正确地对数字列和日期列进行排序。我需要对字符串列进行不区分大小写的排序。我们目前有以下实施:

const sorted=u.orderBy(此函数为(o){
if($.isNumeric(o[列]){
返回parseFloat(o[列]);
}
返回(o[列]).toLowerCase();
},方向);
这个.clear();
for(设i=0;i}
可以对日期进行排序-假设列中的所有值都是日期,则只需测试类型并返回日期:

const sorted = _.orderBy(this, function(o) {
  if ($.isNumeric(o[column])) {
    return parseFloat(o[column]);
  }

  if (_.isDate(o[column])) {
    return o[column];
  }

  return (o[column]).toLowerCase();
}, direction);

为什么不试试呢?是日期字符串吗?我花了一些时间找到了能够测试当前实现的位置。日期似乎被视为字符串,而不是日期。我已经浏览了几个线程,以确定该列是否为date。如果我们按原样使用lodash,它将正确排序,但我们需要字符串不区分大小写进行排序。我希望能找到一些简单的方法来解决这个问题。那么“正确处理日期”是什么意思呢?如果它们是字符串,则无法正确排序(取决于格式),但小写不会造成任何影响。它们是按字符串排序的,而不是按日期排序的,它们是实际日期。您可以看到,我们使用ParseFloat为numeric添加了一个特例,但我认为我们也需要一个日期的特例。所以这里我看到了两个问题,第一个是如何确定列是否为date,第二个是在函数中使用什么。可能我在我的问题中不是很清楚,上面的方法是我们TypedArrayFactory中的通用方法。因此,我们需要一些通用方法来处理具有不同类型列的对象数组。它应该根据类型对列进行排序,并对字符列进行排序,不区分大小写。我昨天试过了,但对我无效。我想我最初得到的是datetimes,但这是我实际输入的最终结果:val[I].dateTime=moment(val[I].dateTime).format(“MM/DD/YYYY HH:MM:ss”);form.accessRecords.push(val[i]);你认为是因为moment.format我的日期变成了字符串吗?即使在这种情况下(假设日期已转换为字符串),是否仍有办法使其正常工作?我们需要调查是否可以将筛选器(格式)直接添加到用于显示结果的控件(指令)中,这样我就不需要转换数据。是的,
moment.format
将日期转换为字符串。您无法按该格式对日期进行正确排序,但如果将格式更改为
YYYY/MM/DD HH:MM:ss
,则该格式将起作用。如果您需要其他格式,您应该先排序(按日期),然后排序。我向我们的团队添加了一个请求,以实现在用于显示结果的指令中添加过滤器的功能。这样我们就可以将日期保持为日期,并且仍然可以正确地格式化它。我现在测试了这个解决方案,没有更改日期(因此它当前以不友好的格式显示),并且工作正常。我会标出答案,我们有一个计划来加强我们的指令。