Сумма первого и последнего элемента массива, в чем ошибка подскажите

нужно написать функцию, которая будет создавать массив из чисел и высчитывать сумму первого и последнего элементов массива и имеет один параметр

function fn(number) {
    let sum = 0;
    let arr = [];
    for (let i = 0; i <= number; i+=1 ){
        console.log(i);
        
    }
    return sum = arr[0] + arr[number.length - 1];
    
}
fn(5);
console.log(sum);

получается что выводит с 0 до 5, но не складывает первый и последний элементы массива, где ошибка?, а sum выдает ошибку, хотя ведь sum объявлена.

Выводить-то выводит, но вывод это просто результат console.log(i). Не происходит наполнения самого массива. С этой перспективы понятно что дальше делать?

Она объявлена внутри функции, внутри функции она и будет доступна. Чтобы увидеть сумму первого и последнего тебе нужно вывести в консоль результат вызова функции: console.log(fn(5))

function fn(number) {
    let sum = 0;
    let arr = [];
for (let i = 1; i <= number; i+=1 ){
        //console.log(i);
    }
    return sum = arr[0] + arr[number.length - 1];
    
}
//fn(5);
//console.log(sum);
console.log(fn(5));//NaN

не число пишет

  1. Смотрим какие выражения дают “нечисло”.
  2. arr[0] + arr[number.length - 1];.
  3. Смотрим внимательнее на второй аргумент, а там берется .length не от массива элементы которого мы хотим сложить.

И все еще ты не наполнил массив элементами, только вывел числа в консоль (что далеко не тоже самое что и наполнение массива). Без наполнения массива числами ты не сможешь правильно описать последний шаг - суммирование. Нужно начать с наполнения массива

Сделай console.log('arr', arr) перед return, и станет понятнее что я имею в виду.

function fn(number) {
    let sum = 0;
    let arr = [];
    for (let i = 1; i <= number; i += 1){
        arr.push(i);
        //console.log(i);
    }

arr.push(i);вот так нужно наполнять массив? правильно продолжаю

console.log(arr); вот это проверка

1 лайк

Да

Выведи массив в консоль после цикла и сравни с ожадемым тобой результатом.

function fn(number) {
    let sum = 0;
    let arr = [];
    for (let i = 1; i <= number; i += 1){
        arr.push(i);
        console.log(arr);
        console.log(i);
    }
    return sum = arr[0] + arr.length;
    
}

console.log(fn(5));//6

получается вот так правильно?

return sum = arr[0] + arr.length;
сумирование первого и последнего элемента

Это суммирование первого элемента с длиной массива. По стечению обстоятельств этот код будет давать нужное тебе число, но способ вычисления некорректный. Нужно переписать именно на использование элемента массива а не длины массива.

return sum = arr[0] + arr.pop(); а так?

Это корректный код с точкни зрения задачи “первый и последний элемент массива”. Но с инженерной точки зрения не стоит использовать методы который мутируют данные (а метод pop изменит оригинальны массив). Хоть в этом конкретном случае последствий нет (массив более никак не используется), не стоит останавливаться именно на этом коде.

Тебе нужно return arr[0] + arr[arr.length - 1]

Спасибо большое, подводишь меня к правильным мыслям.

Всегда пожалуйста. Пиши посты, в обсуждении них и разберемся. Не я, так кто-то другой с форума подскажет. Тут достаточно умных людей которые дадут полезную перспективу на твои вопросы.

Плюс приглашай людей, делись постом/сайтом в местах своего социального обитания. Больше людей - больше движа - больше пользы от времени тех кто помогает.

Решение на основе полипропилена:

function xyz(n){
   return [...Array(n)]
          .map( (item, index) => index )
		  .filter( (item, index) => index == 0 || index == n - 1 )
		  .reduce( (sum, current) => sum + current, 0 );
   }
   
   console.log( xyz(5) );