问题描述
我想对这个数组进行排序,就像顶部的所有四年最后到来一样,而不改变其他人的顺序,并且应该在不使用正则表达式的情况下完成。 注意,在这种情况下年数不是固定的,可能在其他迭代年数仅为 2。
我试图对它进行排序并反转它的工作,但这改变了其他人的顺序。
[ '2019',
'2020',
'2021',
'2022',
'2023',
'_id',
'Tender Ref Number',
'Tender Number',
'Additional Information',
'Tender Type',
'Country Exchange Rate',
'Start Date',
'End Date',
'Submission Closing Date',
'Result Date',
'Country',
'Region',
'Distributer Name',
'Franchise Name',
'Account Name',
'Local Account Name',
'Win/Lost',
'SAP Material Code',
'ICC Code',
'Quantity',
'Description',
'Standard Cost Per SAP Unit',
'Tender Price Local',
'Tender Price USD',
'Total Sales',
'Tender Currency',
'quantity_distribution',
'Approvers' ]
[ '_id',
'Tender Ref Number',
'Tender Number',
'Additional Information',
'Tender Type',
'Country Exchange Rate',
'Start Date',
'End Date',
'Submission Closing Date',
'Result Date',
'Country',
'Region',
'Distributer Name',
'Franchise Name',
'Account Name',
'Local Account Name',
'Win/Lost',
'SAP Material Code',
'ICC Code',
'Quantity',
'Description',
'Standard Cost Per SAP Unit',
'Tender Price Local',
'Tender Price USD',
'Total Sales',
'Tender Currency',
'quantity_distribution',
'Approvers',
'2019',
'2020',
'2021',
'2022',
'2023',]
1楼
尝试使用和来检查元素是否是年份(数字)和...
展开运算符:
var data = [ '2019', '2020', '2021', '2022', '2023', '_id', 'Tender Ref Number', 'Tender Number', 'Additional Information', 'Tender Type', 'Country Exchange Rate', 'Start Date', 'End Date', 'Submission Closing Date', 'Result Date', 'Country', 'Region', 'Distributer Name', 'Franchise Name', 'Account Name', 'Local Account Name', 'Win/Lost', 'SAP Material Code', 'ICC Code', 'Quantity', 'Description', 'Standard Cost Per SAP Unit', 'Tender Price Local', 'Tender Price USD', 'Total Sales', 'Tender Currency', 'quantity_distribution', 'Approvers' ]; let years = data.splice(0, data.filter((ele) => !isNaN(ele)).length); data = [...data, ...years]; console.log(data);
2楼
假设在n 年之后,下一项将是数组中的_id
。
您可以的阵列,直到_id
和它在末端。
let arr = [ '2019', '2020', '2021', '2022', '2023', '_id', 'Tender Ref Number', 'Tender Number', 'Additional Information', 'Tender Type', 'Country Exchange Rate', 'Start Date', 'End Date', 'Submission Closing Date', 'Result Date', 'Country', 'Region', 'Distributer Name', 'Franchise Name', 'Account Name', 'Local Account Name', 'Win/Lost', 'SAP Material Code', 'ICC Code', 'Quantity', 'Description', 'Standard Cost Per SAP Unit', 'Tender Price Local', 'Tender Price USD', 'Total Sales', 'Tender Currency', 'quantity_distribution', 'Approvers' ]; arr = arr.concat(arr.splice(0, arr.indexOf('_id'))); console.log(arr);
3楼
let a = [ '2019',
'2020',
'2021',
'2022',
'2023',
'_id',
'Tender Ref Number',
'Tender Number',
'Additional Information',
'Tender Type',
'Country Exchange Rate',
'Start Date',
'End Date',
'Submission Closing Date',
'Result Date',
'Country',
'Region',
'Distributer Name',
'Franchise Name',
'Account Name',
'Local Account Name',
'Win/Lost',
'SAP Material Code',
'ICC Code',
'Quantity',
'Description',
'Standard Cost Per SAP Unit',
'Tender Price Local',
'Tender Price USD',
'Total Sales',
'Tender Currency',
'quantity_distribution',
'Approvers' ];
let years = a.filter(elem => !isNaN(Number(elem));
years = years.sort((a,b) => a-b);
let finalArr = a.filter(elem => isNaN(Number(elem));
finalArr.concat(years);
4楼
如果年份可以在数组的任何位置,那么您可以这样使用 :
const input = [ '2019', '2020', '2021', '2022', '2023', '_id', 'Tender Ref Number', 'Tender Number', 'Additional Information', 'Tender Type', 'Country Exchange Rate', 'Start Date', '2024', 'End Date', 'Submission Closing Date', 'Result Date', 'Country', 'Region', 'Distributer Name', 'Franchise Name', 'Account Name', 'Local Account Name', 'Win/Lost', 'SAP Material Code', 'ICC Code', 'Quantity', 'Description', 'Standard Cost Per SAP Unit', 'Tender Price Local', '2025', 'Tender Price USD', 'Total Sales', 'Tender Currency', 'quantity_distribution', 'Approvers']; let res = input.reduce( (acc, curr) => (isNaN(curr) ? acc[0].push(curr) : acc[1].push(curr), acc), [[],[]] ); console.log(res[0].concat(res[1]));