Как вернуть правильное значение с умножением всех элементов массива? - PullRequest
0 голосов
/ 19 мая 2019

То, что я пытаюсь сделать здесь, это умножить все элементы массива А. На эти значения: [1,2,0, -5] должно возвращаться 0 ... но возвращается 1. Что я 'я делаю неправильно?Вот код:

function solution(A){
    let multi = 1;
    for(i = 1; i < A.length; i++){
        multi *= A[i]
    } 

    if(multi = 30){
        return 1
    } else if (multi = -30){
        return -1
    } else if (multi = 0){
        return 0
    } else{
        console.log("hey hey");
    }
}

solution(A = [1,2,0,-5])

Ответы [ 3 ]

1 голос
/ 19 мая 2019

Ваш цикл начинается с 1 - Массивы JavaScript (и массивы во многих других языках) индексируются 0, поэтому начинайте с 0. Ваши if условия также неверны - используйте оператор сравнения ==, а не оператор присваивания =.

function solution(A){
    let multi = 1;
    for(i = 0; i < A.length; i++){
        multi *= A[i]
    } 

    if(multi == 30){
        return 1
    } else if (multi == -30){
        return -1
    } else if (multi == 0){
        return 0
    } else{
        console.log("hey hey");
    }
}
0 голосов
/ 19 мая 2019

function solution(A){
  const mult = A.reduce((a, b) => a*b);
  return mult == 30 ? 1 : mult == -30 ? -1 : 0;
}

console.log(solution(A = [1,2,0,-5]));
0 голосов
/ 19 мая 2019

Массивы Javascript начинаются с 0, а не с 1. В любом случае, поскольку это вызывает проблемы, следует использовать функцию «уменьшить» для нескольких элементов массива, так как это избавляет от необходимости беспокоиться об индексах.

let mult = A.reduce((a,b)=>a*b);

Если есть назначение, а не сравнение.if (multi = 30) тогда проверяет, является ли multi ненулевым, а потому что это 30. Один из способов избежать этой проблемы - поместить константу слева: -

  if(30 === multi){
        return 1
    } else if (-30 ===multi){
        return -1
    } else if (0===multi){
        return 0
    } else{
        console.log("hey hey");
    }

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

solution([1,2,0,-5]);
...