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

Javascript 在不更改某些特定项的顺序的情况下对数组进行排序

Javascript 在不更改某些特定项的顺序的情况下对数组进行排序,javascript,Javascript,我想对这个数组进行排序,就像所有四年排名靠前的数组最终在不改变其他数组顺序的情况下出现一样,它应该在不使用正则表达式的情况下完成。 注意,年数不是固定的,在这种情况下可能在其他迭代中年数只有2 我试着对它进行排序并反转它的工作方式,但这改变了其他人的顺序 [ '2019', '2020', '2021', '2022', '2023', '_id', 'Tender Ref Number', 'Tender Number', 'Additional Informa

我想对这个数组进行排序,就像所有四年排名靠前的数组最终在不改变其他数组顺序的情况下出现一样,它应该在不使用正则表达式的情况下完成。 注意,年数不是固定的,在这种情况下可能在其他迭代中年数只有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',]
尝试使用&检查元素是否为年份(数字),以及
排列运算符:

var数据=[‘2019’、‘2020’、‘2021’、‘2022’、‘2023’、‘投标编号’、‘投标编号’、‘附加信息’、‘投标类型’、‘国家汇率’、‘开始日期’、‘结束日期’、‘提交截止日期’、‘结果日期’、‘国家’、‘地区’、‘经销商名称’、‘特许经营名称’、‘账户名称’、‘当地账户名称’、‘赢/输’、‘SAP物料代码’“ICC代码”、“数量”、“说明”、“每SAP单位标准成本”、“本地投标价格”、“投标价格美元”、“总销售额”、“投标货币”、“数量分配”、“批准人”];
让年份=data.splice(0,data.filter((ele)=>!isNaN(ele)).length);
数据=[…数据,…年];

console.log(data);
假设在n年之后,下一项将是数组中的
\u id
。您可以将数组设置为
\u id
,并将其设置在末尾

让arr=[‘2019’、‘2020’、‘2021’、‘2022’、‘2023’、‘投标编号’、‘投标编号’、‘附加信息’、‘投标类型’、‘国家汇率’、‘开始日期’、‘结束日期’、‘提交截止日期’、‘结果日期’、‘国家’、‘地区’、‘经销商名称’、‘特许经营名称’、‘账户名称’、‘当地账户名称’、‘赢/输’、‘SAP物料代码’“ICC代码”、“数量”、“说明”、“每SAP单位标准成本”、“本地投标价格”、“投标价格美元”、“总销售额”、“投标货币”、“数量分配”、“批准人”];
arr=arr.concat(arr.splice(0,arr.indexOf)(“u id”));

console.log(arr);
如果年份可以位于阵列的任何位置,则可以使用以下方法:

const输入=[
‘2019’、‘2020’、‘2021’、‘2022’、‘2023’、‘招标编号’,
“投标编号”、“附加信息”、“投标类型”,
‘国家汇率’、‘开始日期’、‘2024’、‘结束日期’,
“提交截止日期”、“结果日期”、“国家”、“地区”,
'分销商名称','特许经营名称','帐户名称','本地帐户名称',
‘赢/输’、‘SAP物料代码’、‘ICC代码’、‘数量’、‘说明’,
“每SAP单位标准成本”、“本地投标价格”、“2025年”,
‘投标价格美元’、‘总销售额’、‘投标货币’,
“数量分配”、“批准人”];
让res=input.reduce(
(acc,curr)=>(isNaN(curr)?acc[0]。推送(curr):acc[1]。推送(curr),acc),
[[],[]]
);

console.log(res[0].concat(res[1]));
最好的方法是使用正则表达式。为什么不呢?我想这样做,但在我们的项目中,我们不允许使用正则表达式。如果您有其他解决方案,那么请在将来帮助我,发布您尝试过的代码,我们将能够帮助您解决问题。如果每次遇到困难,您都只是来这里一次,您将不会学到什么请别人帮你解决这个问题。
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);