javascript 按特殊字符后的值对字符串数组进行排序
javascript sort array of string by value after special character
我想按包含带有冒号 (:) 的值的数组排序
这是下面的输入
[
'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)
如何对数组值进行排序/分组
如有任何帮助,我们将不胜感激:)
您可以收集所有组和单个值以及 return 平面数组。
const
data = ['Severity', 'Name', 'U1A_Shift SCM: UPTT-Pressure (Bara)', 'U1A_Shift SCM: DPTT-Pressure (Bara)', 'U3B SCM: APTT-Pressure (Bara)', 'U3B 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', 'U1B SCM: DPTT-Pressure (Bara)', 'U1B SCM: UPTT-Pressure (Bara)', 'U1A_Shift SCM: PCV-CHOKE status - Control position', 'Alarms', 'Advisories', '__row_index'],
map = data.reduce((m, s) => {
const group = s.split(/:\s*/)[1] || m.size;
return m.set(group, [...(m.get(group) || []), s]);
}, new Map),
grouped = Array.from(map.values()).flat(),
counts = Array
.from(map, ([k, { length }]) => [k, typeof k === 'string' && length])
.filter(([, length]) => length);
console.log(counts);
console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }
我想按包含带有冒号 (:) 的值的数组排序
这是下面的输入
[
'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)
如何对数组值进行排序/分组
如有任何帮助,我们将不胜感激:)
您可以收集所有组和单个值以及 return 平面数组。
const
data = ['Severity', 'Name', 'U1A_Shift SCM: UPTT-Pressure (Bara)', 'U1A_Shift SCM: DPTT-Pressure (Bara)', 'U3B SCM: APTT-Pressure (Bara)', 'U3B 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', 'U1B SCM: DPTT-Pressure (Bara)', 'U1B SCM: UPTT-Pressure (Bara)', 'U1A_Shift SCM: PCV-CHOKE status - Control position', 'Alarms', 'Advisories', '__row_index'],
map = data.reduce((m, s) => {
const group = s.split(/:\s*/)[1] || m.size;
return m.set(group, [...(m.get(group) || []), s]);
}, new Map),
grouped = Array.from(map.values()).flat(),
counts = Array
.from(map, ([k, { length }]) => [k, typeof k === 'string' && length])
.filter(([, length]) => length);
console.log(counts);
console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }