Я пытаюсь написать функцию, которая постоянно добавляет вместе первый и последний элементы массива, используя forEach с array.shift() + array.pop().Итеративное сложение первого и последнего чисел в массиве
Проблема в том, что for-loop не заполняет самые внутренние числа, и поэтому массив всегда остается с двумя значениями внутри него.
Код:
function choreAssignment(chores) {
chores.sort(function(a, b) {return a - b});
var assignment = [];
chores.forEach(function() {
assignment.push((chores.pop() + chores.shift()));
});
return assignment.sort(function(a, b) {return a - b});
}
Приведенный выше код работает, как ожидалось, но он оставляет сокровенные два значения внутри chores
массива.
Например, если я бегу:
Код:
var arr = [1, 4, 7, 2, 5, 9, 4, 3];
choreAssignment(arr);
я получаю:
[8, 9, 10]
Т.е., это добавляет 9 & 1, 7 & 2, 5 & 3 , но он оставляет [4, 4] внутри массива.
Я не уверен, почему это так. Спасибо.
Ваш пример и описание, кажется, не совпадают. Я ожидаю, что выход будет «[4, 8, 16, 7]» для ввода образца [[1, 4, 7, 2, 5, 9, 4, 3] ». – pzp
Сначала он сортирует алгоритм работы с наименьшим значением до самого большого. Поэтому перед использованием> shift() и pop() значения перечислены как [1, 2, 3, 4, 4, 5, 7, 9], поэтому он объединяет 9 + 1, 7 + 2 и 5 + 3 , но не 4 + 4 по какой-то причине. –