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


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

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

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

Поделись записью