řazení by mělo být podle data, pak podle abecedy (takže všechny aktivní nahoře A–Z, potom všechny neaktivní dole A–Z)


musím zobrazit seznam v pořadí řazení s ohledem na datum podpisu, if signature date is not past dated and if there is no date for signature date pak je považován za aktivní záznam (pořadí řazení by mělo být podle stavu, pak podle abecedy (takže všechny aktivní nahoře A-Z, pak všechny neaktivní dole A-Z). Udělal jsem třídění podle jména, ale nebyl jsem schopen vložit data neaktivních podpisů do end.Připojil jsem také DEMO.

const  employee = [
{
  name: 'jpat',
  signatureDate: '',
  businessType: 12346,
  originalFileName: 'hello.xls',
  agentW9id: 11,
  fileName: 'hello.xls',
  agentCode: 0,
  class: '',
  status: '',
},
{
  name: 'jcar',
  signatureDate: '09/10/2021',
  businessType: 12346,
  originalFileName: 'test.xls',
  agentW9id: 12,
  fileName: 'test.xls',
  agentCode: 0,
  class: '',
  status: '',
},
{
  name: 'Test',
  signatureDate: '09/23/2020',
  businessType: 12346,
  originalFileName: 'test.xls',
  agentW9id: 13,
  fileName: 'test.xls',
  agentCode: 0,
  class: 'inactive',
  status: 'Inactive',
},
{
  name: 'newTest',
  signatureDate: '10/9/2020',
  businessType: 12346,
  originalFileName: 'test.xls',
  agentW9id: 13,
  fileName: 'test.xls',
  agentCode: 0,
  class: 'inactive',
  status: 'Inactive',
},
{
  name: 'abc',
  signatureDate: '10/29/2021',
  businessType: 12346,
  originalFileName: 'test.xls',
  agentW9id: 13,
  fileName: 'test.xls',
  agentCode: 0,
  class: '',
  status: '',
},
{
  name: 'djhfj',
  signatureDate: '',
  businessType: 12346,
  originalFileName: 'test.xls',
  agentW9id: 13,
  fileName: 'test.xls',
  agentCode: 0,
  class: '',
  status: '',
},
  ];
  
console.log(employee.sort((a, b) => (a.name > b.name ? 1 : -1)));

DEMO

Odpověď

Dobře, aktualizovaný kód,

  1. rozdělit se do objektů na základě stavu (aktivní a neaktivní)
  2. Seřaďte je podle názvu a připojte je zpět k sobě

Pracovní kód níže a Sandbox

Výsledný obrázek

const employee = [{
    name: 'jpat',
    signatureDate: '',
    businessType: 12346,
    originalFileName: 'hello.xls',
    agentW9id: 11,
    fileName: 'hello.xls',
    agentCode: 0,
    class: '',
    status: '',
  },
  {
    name: 'jcar',
    signatureDate: '09/10/2021',
    businessType: 12346,
    originalFileName: 'test.xls',
    agentW9id: 12,
    fileName: 'test.xls',
    agentCode: 0,
    class: '',
    status: '',
  },
  {
    name: 'Test',
    signatureDate: '09/23/2020',
    businessType: 12346,
    originalFileName: 'test.xls',
    agentW9id: 13,
    fileName: 'test.xls',
    agentCode: 0,
    class: 'inactive',
    status: 'Inactive',
  },
  {
    name: 'newTest',
    signatureDate: '10/9/2020',
    businessType: 12346,
    originalFileName: 'test.xls',
    agentW9id: 13,
    fileName: 'test.xls',
    agentCode: 0,
    class: 'inactive',
    status: 'Inactive',
  },
  {
    name: 'abc',
    signatureDate: '10/29/2021',
    businessType: 12346,
    originalFileName: 'test.xls',
    agentW9id: 13,
    fileName: 'test.xls',
    agentCode: 0,
    class: 'inactive',
    status: 'Inactive',
  },
  {
    name: 'djhfj',
    signatureDate: '',
    businessType: 12346,
    originalFileName: 'test.xls',
    agentW9id: 13,
    fileName: 'test.xls',
    agentCode: 0,
    class: '',
    status: '',
  }
];

var inactive = [],
  active = [];
employee.forEach((item) => {
  if (item.status == 'Inactive')
    inactive.push(item);
  else
    active.push(item);
});



inactive.sort(function(a, b) {
  if (a.name.toLowerCase() < b.name.toLowerCase()) {
    return -1;
  }
  if (a.name.toLowerCase() > b.name.toLowerCase()) {
    return 1;
  }
  return 0;
})

active.sort(function(a, b) {
  if (a.name.toLowerCase() < b.name.toLowerCase()) {
    return -1;
  }
  if (a.name.toLowerCase() > b.name.toLowerCase()) {
    return 1;
  }
  return 0;
})


var sortedArray = active.concat(inactive);

console.log(sortedArray);