nodejs vs javascript (Two different answers)

Viewed 53
var largestNumber = function (nums) {
    let comp = (a, b) => {
        a = a.split("").reverse().join("");
        b = b.split("").reverse().join("");
        return a.localeCompare(b) > 0 ? 1 : 0;
    };
    return nums.map(v => '' + v).sort(comp).reverse().join('');

};
console.log(largestNumber([3, 30, 34, 5, 9]));

In nodejs output: 9534330
In javascript output: 9534303
What is happening?

1 Answers

As said in the comments your compare function is non deterministic and the 2 engines result in different outcomes. You could try the following in both versions to see consistent results 9534330.

var largestNumber = function (nums) {
    let comp = (a, b) => {
        a = a.split("").reverse().join("");
        b = b.split("").reverse().join("");
        return a.localeCompare(b);
    };
    return nums.map(v => '' + v).sort(comp).reverse().join('');

};
console.log(largestNumber([3, 30, 34, 5, 9]));

Related