Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const getSortKey = function(el) {
- const pad = function(str, len) {
- return ('' + str + ' ').slice(0, len);
- };
- const addr = [pad(el.streetName || '', 5), pad(el.streetNumber || '', 5), pad(el.unit || '', 5)].join('');
- const name = [pad((el.firstName||'').toLowerCase(), 5), pad((el.lastName||'').toLowerCase(), 5)].join('');
- if (el.product === 'wireless') {
- return [pad('', 15), name, el.ctn, '0-wls'].join('');
- } else if (el.product === 'internet') {
- return [addr, pad('', 20), '1-hsi'].join('');
- } else if (el.product === 'tv') {
- return [addr, pad('', 20), '2-tv '].join('');
- } else if (el.product === 'rhp') {
- return [addr, pad('', 10), el.ctn, '3-rhp'].join('');
- } else {
- return [addr, pad('', 10), el.ctn||'', '4-product'].join('');
- }
- };
- function sortFn(a, b) {
- const sortKeyA = getSortKey(a);
- const sortKeyB = getSortKey(b);
- return sortKeyA < sortKeyB ? -1 : sortKeyA > sortKeyB ? 1 : 0;
- }
- const services = [
- {product: 'wireless', firstName: 'array', lastName: 'sort', ctn: '6471234567'},
- {product: 'internet', streetName: 'dixie', streetNumber: '10' },
- {product: 'tv', streetName: 'dixie', streetNumber: '10'},
- {product: 'internet', streetName: 'dixie', streetNumber: '13', unit: '456'},
- {product: 'rhp', streetName: 'dixie', streetNumber: '10', ctn: '1234567890'},
- {product: 'wireless', firstName: 'John', lastName: 'Doe', ctn: '1234567890'},
- {product: 'rhp', streetName: 'dixie', streetNumber: '10', ctn: '4164567890'},
- {product: 'wireless', firstName: 'Foo', lastName: 'Bar', ctn: '4161234567'},
- {product: 'tv', streetName: 'dixie', streetNumber: '10', unit: '123'},
- {product: 'internet', streetName: 'dixie', streetNumber: '13', unit: '123'},
- {product: 'rhp', streetName: 'dixie', streetNumber: '10', ctn: '9054567890'},
- {product: 'wireless', firstName: 'Hello', lastName: 'World', ctn: '9053829283'},
- ];
- services.sort(sortFn).forEach(el => console.log(getSortKey(el), JSON.stringify(el)));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement