Update hexadecimal sort after review
- Use Array.map instead of for-loop - Add test case
This commit is contained in:
parent
3b3c27072f
commit
ba24e12454
@ -143,22 +143,18 @@ class Sort extends Operation {
|
|||||||
* @returns {number}
|
* @returns {number}
|
||||||
*/
|
*/
|
||||||
static _hexadecimalSort(a, b) {
|
static _hexadecimalSort(a, b) {
|
||||||
const a_ = a.split(/([^\da-f]+)/i),
|
let a_ = a.split(/([^\da-f]+)/i),
|
||||||
b_ = b.split(/([^\da-f]+)/i);
|
b_ = b.split(/([^\da-f]+)/i);
|
||||||
|
|
||||||
for (let i = 0; i < a_.length; ++i) {
|
a_ = a_.map(v => {
|
||||||
const t = parseInt(a_[i], 16);
|
const t = parseInt(v, 16);
|
||||||
if (!isNaN(t)) {
|
return isNaN(t) ? v : t;
|
||||||
a_[i] = t;
|
});
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 0; i < b_.length; ++i) {
|
b_ = b_.map(v => {
|
||||||
const t = parseInt(b_[i], 16);
|
const t = parseInt(v, 16);
|
||||||
if (!isNaN(t)) {
|
return isNaN(t) ? v : t;
|
||||||
b_[i] = t;
|
});
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 0; i < a_.length && i < b.length; ++i) {
|
for (let i = 0; i < a_.length && i < b.length; ++i) {
|
||||||
if (isNaN(a_[i]) && !isNaN(b_[i])) return 1; // Numbers after non-numbers
|
if (isNaN(a_[i]) && !isNaN(b_[i])) return 1; // Numbers after non-numbers
|
||||||
|
@ -30,4 +30,15 @@ TestRegister.addTests([
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "SeqUtils - Hexadecimal sort",
|
||||||
|
input: "06,08,0a,0d,0f,1,10,11,12,13,14,15,16,17,18,19,1a,1b,1c,1d,1e,1f,2,3,4,5,7,9,b,c,e",
|
||||||
|
expectedOutput: "1,2,3,4,5,06,7,08,9,0a,b,c,0d,e,0f,10,11,12,13,14,15,16,17,18,19,1a,1b,1c,1d,1e,1f",
|
||||||
|
recipeConfig: [
|
||||||
|
{
|
||||||
|
"op": "Sort",
|
||||||
|
"args": ["Comma", false, "Numeric (hexadecimal)"]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
},
|
||||||
]);
|
]);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user