Pages Menu Stijit.com
Twitter
Categories Menu

Функции в javascript — определение max и min элемента массива, cумма всех элементов

1. Сделать для каждого положительного элемента массива +1, для каждого отрицательного элемента -1

<!doctype html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
</head>
<body>
  <script>

  var arr = [1, 0, -1, -5, 2, -3, 4, 110, -18];
  function transformDigit(arr) {
    var arrLen = arr.length;
    for (var i = 0; i < arrLen; i++) {
      if (arr[i] < 0) {
        arr[i] += -1;
      } else {
        arr[i] += 1;
      }
    }
    return arr;
  }
  fTrans = transformDigit(arr); //Вызываем срабатывание функции и записываем результат в переменную
  console.log(fTrans); //Выводим значение переменной в консоль
  document.write("fTrans result: " + "[" + fTrans + "]"); //Выводим значение переменной на страницу

  </script>
</body>
</html>

2. Посчитать сумму и среднее арифметическое всех элементов массива

<!doctype html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
</head>
<body>
  <script>

  var arr = [1, 0, -1, -5, 2, -3, 4, 110, -18];
  function sum(arr) {
    var arrLen = arr.length,
        result = 0;
    for (var i = 0; i < arrLen; i++) {
      result += arr[i];
    }
    return result;
  }
  function avg(arr) {
    var arrLen = arr.length,
        result = 0;
    for (var i = 0; i < arrLen; i++) {
      result += arr[i];
    }
    var division = result / arrLen;
    return division;
  }
  var fSum = sum(arr),
      fAvg = avg(arr);

  console.log(fSum, fAvg);
  document.write("fSum result: " + fSum + " ");
  document.write("fAvg result: " + fAvg);

  </script>
</body>
</html>

3. Вывести максимальный и минимальный элемент массива

<!doctype html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
</head>
<body>
  <script>

  var arr = [1, 0, -1, -5, 2, -3, 4, 110, -18],
      fMax,
      fMin;
  function getMax(arr) {
    var arrLen = arr.length,
        maxEl = arr[0];
    for (var i = 0; i < arrLen; i++) {
      if (maxEl < arr[i]) {
        maxEl = arr[i];
      }
    }
    return maxEl;
  }
  function getMin(arr) {
    var arrLen = arr.length,
        minEl = arr[0];
    for (var i = 0; i < arrLen; i++) {
      if (minEl > arr[i]) {
        minEl = arr[i];
      }
    }
    return minEl;
  }
  fMax = getMax(arr);
  fMin = getMin(arr);
  console.log(fMax, fMin); 
  document.write("fMax result: " + fMax + " ");
  document.write("fMin result: " + fMin);

  </script>
</body>
</html>

4. Создать функцию, которая принимает на вход массив, находит в этом массиве максимальный и минимальный элементы и обменивает их местами

Например:
var arr = [1, 2, 3, 4, 5, 3, 4];
swapMinWithMax(arr);
console.log(arr); // -> [5, 2, 3, 4, 1, 3, 4]

<!doctype html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
</head>
<body>
<script>

  var arr = [1, 110, -1, -5, 2, -3, 4, -18, 10, 18];
  function swapMinWithMax(arr) {
    var arrLen = arr.length,
        resultMin = arr[0],
        resultMax = arr[0],
        indexMin = 0,
        indexMax = 0;
    for (var i = 0; i < arrLen; i++) {
      if (resultMin > arr[i]) {
        resultMin = arr[i];
        indexMin = i; //Также можно использовать подход с определением индекса indexMin = arr.indexOf(resultMin); но он медленнее
      }
      else if (resultMax < arr[i]) {
        resultMax = arr[i];
        indexMax = i; //Также можно использовать подход с определением индекса indexMax = arr.indexOf(resultMax); но он медленнее
      }
    }
    arr[indexMin] = resultMax;
    arr[indexMax] = resultMin;
    return arr;
  }

  swapMinWithMax(arr);
  console.log(arr); 
  document.write("swap result: " + "[" + arr + "]");

</script>
</body>
</html>

5 Коммент.

  1. «3. Вывести максимальный и минимальный элемент массива»
    Садись 2.

    console.log([1,5,-1,0,2].sort().pop());
    console.log([1,5,-1,0,2].sort().shift());

    • Садись 5. Но в учебных целях лучше использовать более длинный и подробный вариант кода для нахождения максимального и минимального элементов массива — чтобы понимать где, что и как происходит.

    • Короткий вариант неверно работает на примере:
      console.log([1,5,10,-1,0,2].sort().pop());
      В результате выводится 5, а должно выводить 10. Более длинный вариант работает правильно.

      • Это произошло потому, что по умолчанию sort сортирует, преобразуя элементы к строке. Если бы значения массива были строковыми, сортировалось бы верно. А вообще решение с pop и shift изящное)

        • Однако строковые значения массива не решают проблему! Вот пример.
          Единственное решение — передавать в sort() функцию, которая правильно сравнит значения массива.

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *