Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.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_Json_Angularjs - Fatal编程技术网

javascript按特殊字符后的值对字符串数组进行排序

javascript按特殊字符后的值对字符串数组进行排序,javascript,arrays,json,angularjs,Javascript,Arrays,Json,Angularjs,我想按包含冒号(:)的值的数组排序 这是下面的输入 [ 'Severity', 'Name', 'U1A_Shift SCM: UPTT-Pressure (Bara)', 'U1A_Shift SCM: DPTT-Pressure (Bara)', 'U3B SCM: APTT-Pressure (Bara)', 'U3B SCM: UPTT-Pressure (Bara)', 'U1B SCM: DPTT-Pressure (Bara)',

我想按包含冒号(:)的值的数组排序

这是下面的输入

[
  'Severity',
  'Name',
  'U1A_Shift SCM: UPTT-Pressure (Bara)',
  'U1A_Shift SCM: DPTT-Pressure (Bara)',
  'U3B SCM: APTT-Pressure (Bara)',      
  'U3B SCM: UPTT-Pressure (Bara)',      
  'U1B SCM: DPTT-Pressure (Bara)',      
  'U1B SCM: UPTT-Pressure (Bara)',      
  'U3B SCM: DPTT-Pressure (Bara)',      
  'U1A_Shift SCM: UPTT-Temp (DegC)',    
  'U1A_Shift SCM: DPTT-Temp (DegC)',    
  'U3B SCM: APTT-Temp (DegC)',
  'U3B SCM: UPTT-Temp (DegC)',
  'U1B SCM: DPTT-Temp (DegC)',
  'U1B SCM: UPTT-Temp (DegC)',
  'U3B SCM: DPTT-Temp (DegC)',
  'U1B SCM: PCV-CHOKE status - Control position',
  'U3B SCM: PCV-CHOKE status - Control position',
  'U1A_Shift SCM: PCV-CHOKE status - Control position',
  'Alarms',
  'Advisories',
  '__row_index'
]
我想按冒号(:)后的值对其进行排序/分组

这应该低于输出

[
    'Severity',
    'Name': 'U3B',
    'U1A_Shift SCM: UPTT-Pressure (Bara)',    // grouped by UPTT-Pressure (Bara)
    'U3B SCM: UPTT-Pressure (Bara)',
    'U1B SCM: UPTT-Pressure (Bara)',
    'U1A_Shift SCM: DPTT-Pressure (Bara)',    //grouped by DPTT-Pressure (Bara)
    'U1B SCM: DPTT-Pressure (Bara)',
    'U3B SCM: DPTT-Pressure (Bara)',
    'U3B SCM: APTT-Pressure (Bara)', // grouped by APTT-Pressure (Bara)
    'U1A_Shift SCM: UPTT-Temp (DegC)', // grouped by UPTT-Temp (DegC)
    'U3B SCM: UPTT-Temp (DegC)',
    'U1B SCM: UPTT-Temp (DegC)',
    'U1A_Shift SCM: DPTT-Temp (DegC)', // grouped by DPTT-Temp (DegC)
    'U1B SCM: DPTT-Temp (DegC)',
    'U3B SCM: DPTT-Temp (DegC)',
    'U3B SCM: APTT-Temp (DegC)', // grouped by APTT-Temp (DegC)
    'U1B SCM: PCV-CHOKE status - Control position', // grouped by PCV-CHOKE status - Control position
    'U3B SCM: PCV-CHOKE status - Control position',
    'U1A_Shift SCM: PCV-CHOKE status - Control position',
    'Alarms',
    'Advisories',
    '__row_index',
]
我需要对位于“:”之后的数组值进行排序,例如:APTT Temp(DegC)

如何对数组值进行排序/分组


非常感谢您的帮助:)

您可以收集所有组和单个值并返回平面数组

const
数据=[‘严重性’、‘名称’、‘U1A_班次SCM:UPTT压力(Bara)’、‘U1A_班次SCM:DPTT压力(Bara)’、‘U3B SCM:UPTT压力(Bara)’、‘U3B SCM:DPTT压力(Bara)’、‘U1A_班次SCM:UPTT温度(DegC)’、‘U3B SCM:APTT温度(DegC)’、‘U3B SCM:UPTT温度(DegC)’‘U1B SCM:DPTT温度(DegC)’、‘U1B SCM:UPTT温度(DegC)’、‘U3B SCM:DPTT温度(DegC)’、‘U1B SCM:PCV-节流阀状态-控制位置’、‘U3B SCM:PCV-节流阀状态-控制位置’、‘U1B SCM:DPTT压力(Bara)’、‘U1B SCM:UPTT压力(Bara)’、‘U1A\U换档SCM:PCV-节流阀状态-控制位置’、‘警报’、‘警告’、‘行索引’,
地图=数据。减少((m,s)=>{
常量组=s.split(/:\s*/)[1]| | m.size;
返回m.set(group,[…(m.get(group)| |[]),s];
},新地图),
分组=数组.from(map.values()).flat(),
计数=数组
.from(map,([k,{length}])=>[k,typeof k==='string'&&length])
.filter(([,length])=>长度;
控制台日志(计数);
控制台日志(分组)

.as console wrapper{max height:100%!important;top:0;}
所需的输出是语法错误?与预期结果无关,在我看来是有序的。@evolutionxbox:抱歉,最初是对象,我现在已将所需的输出更新为数组。:)还请注意,输入和输出都不是有效的JSON。顺序是什么?看起来是随机的。Hi Nina,为了实现这一点,我可能需要做什么改变?你可以按照上面分组键的顺序构建一个新对象。你能帮我完成这一部分吗,我急需它:)@MitulPanchal类似的东西?@NinaScholz是的,对象的值如何获取它(分组的常量键){obj[key]=“随便什么”;}