javascript - 按数组中的标签对不同的字段进行排序
问题描述
我从后端得到一组混乱的数据。REF 和 LOT 标签可以在不同的索引中,我需要它们在前端始终为 1 和 2(REF 和 LOT)。如何检查标签和排序?
版本 1:
array1 = [
{ label: 'GT', placeholder: null, value: '001111' },
{ label: 'Date', placeholder: null, value: '01/01/2000' },
{ label: 'LOT', placeholder: null, value: '84739' },
{ label: 'REF', placeholder: null, value: '11111' },
{ label: 'Company', placeholder: null, value: 'Company' },
];
版本 2:
array2 = [
{ label: 'GT', placeholder: null, value: '001111' },
{ label: 'LOT', placeholder: null, value: '84739' },
{ label: 'Date', placeholder: null, value: '01/01/2000' },
{ label: 'Company', placeholder: null, value: 'Company' },
{ label: 'REF', placeholder: null, value: '11111' },
];
结果:
[
{ label: 'REF', placeholder: null, value: '11111' },
{ label: 'LOT', placeholder: null, value: '84739' },
{ label: 'GT', placeholder: null, value: '001111' },
{ label: 'Date', placeholder: null, value: '01/01/2000' },
{ label: 'Company', placeholder: null, value: 'Company' },
];
解决方案
您可以获取一个有序对象,并通过分配一个较大的值将它们移到末尾。
const array = [ { label: 'GT', placeholder: null, value: '001111' }, { label: 'LOT', placeholder: null, value: '84739' }, { label: 'Date', placeholder: null, value: '01/01/2000' }, { label: 'Company', placeholder: null, value: 'Company' }, { label: 'REF', placeholder: null, value: '11111' }, ],
sortOrder = ['REF', 'LOT'],
order = Object.fromEntries(sortOrder.map((k, i) => [k, i + 1]));
array.sort((a, b) => (order[a.label] || Number.MAX_VALUE) - (order[b.label] || Number.MAX_VALUE) );
console.log(array);
推荐阅读
- docker - 用 docker-compose.prod.yml 覆盖 dockercompose.yml
- api - 尝试添加查询参数 MKM API 2.0、OAuth 1.0 时出现 401 错误
- python - 将流程图转换为 python 代码(战舰的 AI)
- ruby-on-rails - ActionCable 连接方法永远不会被调用
- php - 使用 WindowsAuth / Kerberos 连接到 MS SQL Server 的 Linux Apache+PHP 问题(“没有可用的 Kerberos 凭据”)
- vim - 多个文件中的gvim中的列编辑
- mysql - Mysql 最后插入 ID Graphql
- jenkins - 如何跳过 Gitlab 中特定文件更改的 Jenkins CI 触发器?
- node.js - 从 .ejs 文件发送一个 vue 组件 PROPS
- oracle - 使用 from 子句查询时如何更新记录?