function sumDigits(num) {
return String(num).split('').reduce(add);
}
function add(a, b) {
return Number(a) + Number(b);
}
function descending(a, b) {
if (a > b) {
return -1;
} else if (a < b) {
return 1;
} else {
return 0;
}
}
function extractHighestTwo(arr) {
return arr.sort(descending).slice(0, 2);
}
function solution(arr) {
let sums = {};
arr.forEach(function(num) {
sum = sumDigits(num);
if (sums[sum]) {
sums[sum].push(num);
} else {
sums[sum] = [num];
}
});
result = Object.values(sums)
.filter(nums => nums.length >= 2)
.map(extractHighestTwo)
.map(nums => nums.reduce(add))
.sort(descending)[0];
console.log(result || -1);
return result || -1;
}
solution([51, 71, 17, 42]);
solution([42, 33, 60]);
solution([51, 32, 43]);