Вы слишком усложняете свой алгоритм, пытаясь проверить, нужно ли вам добавить текущее число к общей сумме или нет. Вместо этого все, что вам нужно сделать, это запустить al oop над вашим массивом, чтобы суммировать все ваши элементы в вашем массиве. Это даст вам общую сумму всех ваших элементов. Затем снова выполните итерацию по вашему массиву. Для каждого элемента в вашем массиве вычтите его из суммы, которую вы только что вычислили, и выведите sh в новый массив. Это даст вам сумму, если вы не будете использовать число в позиции i<sup>th</sup>
. Затем вы можете найти минимальное / максимальное значения, используя функции JavaScript Math.min
и Math.max
.
Вот пример использования .reduce()
и .map()
для вычисления окончательного результата:
const miniMaxSum = arr => {
const sum = arr.reduce((s, n) => n+s, 0)
const results = arr.map(n => sum - n);
return [Math.min(...results), Math.max(...results)];
}
const [min, max] = miniMaxSum([1, 2, 3, 4, 5]);
console.log(min, max);
Если вы предпочитаете стандарт для циклов, вот реализация вышеупомянутого в более императивном стиле:
const miniMaxSum = arr => {
let sum = 0;
for(let i = 0; i < arr.length; i++) { // sum all elements
sum += arr[i];
}
let results = [];
for(let i = 0; i < arr.length; i++) {
results[i] = sum - arr[i]; // sum minus the current number
}
return [Math.min(...results), Math.max(...results)];
}
const [min, max] = miniMaxSum([1, 2, 3, 4, 5]);
console.log(min, max);