JavaScript | Как увеличить все числа в массиве на определённое число?

JavaScript | Как увеличить все числа в массиве на определённое число?

Есть массив JavaScript:

var massiv = [1,2,3,4,5,6,7,8,9,10]

Мы хотим увеличить все числа в этом массиве на 100.

 

Решение задачи — простое

Чтобы решить задачу нужно использовать метод объектов-прототипов Array, который называется map(). Он ходит по каждому элементу основного массива, делает преобразования и возвращает новый массив такой же длины (с такой же последовательностью)

massiv.map(i => i + 100)

Вывод в консоль браузера:

Увеличили все числа в массиве на 100 - JavaScript
Увеличили все числа в массиве на 100 — JavaScript

 

Можно сделать ещё круче и написать свой собственный универсальный метод для конструктора объектов Array.

 

Крутое решение задачи — Свой метод

Array.prototype.plusfunction (x) {
   return this.map(i => i + x) 
}

Мы написали свой собственный метод для обработки массивов. Теперь мы можем вызывать метод plus() на любом массиве. Но самое крутое, что мы теперь можем передавать любое число, на которое хотим увеличивать наши массивы. Пример ниже:

massiv.plus(5)
   [6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

massiv.plus(21)
   [22, 23, 24, 25, 26, 27, 28, 29, 30, 31]

massiv.plus(1010)
   [1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020]

Вывод в консоль браузера:

Свой метод увеличения чисел в массиве - JavaScript
Свой метод увеличения чисел в массиве — JavaScript

А ещё здорово то, что наш метод может работать в противоположную сторону. То есть мы можем менять знак у передаваемого параметра.

massiv.plus(-5)
   [-4, -3, -2, -1, 0, 1, 2, 3, 4, 5]

massiv.plus(-20)
   [-19, -18, -17, -16, -15, -14, -13, -12, -11, -10]

massiv.plus(-88)
   [-87, -86, -85, -84, -83, -82, -81, -80, -79, -78]
Уменьшение чисел в массиве на одно значение - JavaScript
Уменьшение чисел в массиве на одно значение — JavaScript

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

 

Попытка вызвать его на строках вызовет печальный результат:

["1","2","3","4","5","6","7","8","9","10"].plus(5)
Вернёт ["15", "25", "35", "45", "55", "65", "75", "85", "95", "105"]

Сработает конкатенация строк. Передаваемое число в методе plus() на каждой итерации внутреннего map() будет преобразовываться в строку. Одна строка «слипнется» с другой. Результат будет ошибочным.

Сработала конкатенация строк - JavaScript
Сработала конкатенация строк — JavaScript

 

Увеличение всех чисел в массиве циклом FOR OF

Можно использовать специальный цикл FOR OF, который умеет выдёргивать ЗНАЧЕНИЯ из ключей объектов. В нашем случае массив — это тоже объект.

В массиве ключами являются индексы, а значениями — значения.

Цикл FOR нельзя использовать самостоятельно без оборачивания в функцию. Также цикл FOR нельзя присвоить в переменную. Поэтому функция будет выглядеть так:

function adddigit (array, digit){
  let newarray = [];
  for(let element of array){newarray.push(element += digit)};
  return newarray;
}

Пример работы функции

adddigit([1,2,3,4,5,6], 50)
[51, 52, 53, 54, 55, 56]

Скриншот

Использование цикла FOR OF для увеличения всех чисел массива на определённое число - JavaScript
Использование цикла FOR OF для увеличения всех чисел массива на определённое число — JavaScript

 

Информационные ссылки

JavaScript | Массивы (Array)

Стандарт ECMAScript — Массивы — https://tc39.es/ecma262/#sec-array-objects