Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. const getSortKey = function(el) {
  2. const pad = function(str, len) {
  3. return ('' + str + ' ').slice(0, len);
  4. };
  5. const addr = [pad(el.streetName || '', 5), pad(el.streetNumber || '', 5), pad(el.unit || '', 5)].join('');
  6. const name = [pad((el.firstName||'').toLowerCase(), 5), pad((el.lastName||'').toLowerCase(), 5)].join('');
  7. if (el.product === 'wireless') {
  8. return [pad('', 15), name, el.ctn, '0-wls'].join('');
  9. } else if (el.product === 'internet') {
  10. return [addr, pad('', 20), '1-hsi'].join('');
  11. } else if (el.product === 'tv') {
  12. return [addr, pad('', 20), '2-tv '].join('');
  13. } else if (el.product === 'rhp') {
  14. return [addr, pad('', 10), el.ctn, '3-rhp'].join('');
  15. } else {
  16. return [addr, pad('', 10), el.ctn||'', '4-product'].join('');
  17. }
  18. };
  19.  
  20. function sortFn(a, b) {
  21. const sortKeyA = getSortKey(a);
  22. const sortKeyB = getSortKey(b);
  23. return sortKeyA < sortKeyB ? -1 : sortKeyA > sortKeyB ? 1 : 0;
  24. }
  25.  
  26. const services = [
  27. {product: 'wireless', firstName: 'array', lastName: 'sort', ctn: '6471234567'},
  28. {product: 'internet', streetName: 'dixie', streetNumber: '10' },
  29. {product: 'tv', streetName: 'dixie', streetNumber: '10'},
  30. {product: 'internet', streetName: 'dixie', streetNumber: '13', unit: '456'},
  31. {product: 'rhp', streetName: 'dixie', streetNumber: '10', ctn: '1234567890'},
  32. {product: 'wireless', firstName: 'John', lastName: 'Doe', ctn: '1234567890'},
  33. {product: 'rhp', streetName: 'dixie', streetNumber: '10', ctn: '4164567890'},
  34. {product: 'wireless', firstName: 'Foo', lastName: 'Bar', ctn: '4161234567'},
  35. {product: 'tv', streetName: 'dixie', streetNumber: '10', unit: '123'},
  36. {product: 'internet', streetName: 'dixie', streetNumber: '13', unit: '123'},
  37. {product: 'rhp', streetName: 'dixie', streetNumber: '10', ctn: '9054567890'},
  38. {product: 'wireless', firstName: 'Hello', lastName: 'World', ctn: '9053829283'},
  39. ];
  40.  
  41. services.sort(sortFn).forEach(el => console.log(getSortKey(el), JSON.stringify(el)));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement