4 ms·
hah, well then you can of course continue... return (cellA === cellB) ? 0 : (cellA > cellB ? 1 : -1);
by simonsarris 7y ago
hah, well then you can of course continue...
return (cellA === cellB) ? 0 : (cellA > cellB ? 1 : -1);
- XCSme 7y agoKeep going: return (cellA > cellB) * 1 + (cellA < cellB) * -1; More: return Math.sign(cellA - cellB);
- XCSme 7y agoYou don't need the * 1 multiplication: return (cellA > cellB) - (cellA < cellB);
- xxs 7y agodoes work for NaN... rookie mistake, eh
- amelius 7y agoMath.sign trick doesn't work for strings.
- XCSme 7y agoThat's true, but the default string comparison sometimes isn't that useful, right? I somehow assumed the data is numbers only, rookie mistake :) 'ana' > 'Bob' '2' > '123' You usually want to clearly define the order or pre-process the strings in some way (trim them, same casing, etc).
- amelius 7y agoWell, you can pass the strings through .toUpperCase() before comparing them. Or indeed drop the <, > based approach and use: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe... Or: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...
- deleted 7y ago[deleted]
- uryga 7y agohonestly? i like it. properly formatted it looks alright: return ( (cellA === cellB) ? 0 : (cellA > cellB) ? 1 : -1 ); and it's an expression, so i immediately know it won't do any weird control flow. i'd prefer "if/then/else" vs "?/:" but it's not bad
- mappu 7y agoThis works fine if the ? operator is right-associative, but in PHP it's left-associative and you have a subtle bug. I find a better indendation style for this is more like condition ? truthy : falsy
- uryga 7y agoi use that style too sometimes, depends on what's clearer. IME the former usually works better if you have a multiple tests, but the latter is the only readable option if you need to break a case across lines. yeah, ternary-if is busted in php :/ (far from the only thing that's busted there though...) i'm actually doing some PHP work right now, and never chain ifs to avoid this exact thing.