Это всего лишь простой вопрос, который нужно решить императивным и декларативным способами.

вопрос такой:

Нам нужно собрать все числа в массиве. без изменения типа данных number.

поэтому мы можем просто использовать arr.join(), но мы получаем это:

5,6,5,4,7,8 и мы хотим это 565478 , поэтому мы можем использовать arr.join("") и получим правильный ответ:

но мы меняем тип данных с number на string , и мы не хотим менять тип данных. мы можем обернуть метод join("") функцией Number() следующим образом:

Но на самом деле мы сделали преобразование типов дважды.

Что нужно сделать, чтобы получить результат без преобразования типов? Это просто. Мы можем добиться правильного результата с помощью цикла.

Мы объявляем переменную со значением 0, а затем получаем каждое количество массивов в цикле, умножаем его на 10 и в конце добавляем к предыдущему номеру переменной.

Мы наконец получили ответ. Но такой способ решения проблемы не очень понятен. это обязательно.

Что мы можем сделать, чтобы упростить метод решения задач?

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

Но у нас есть две проблемы:

  1. карта возвращает новый массив
  2. у нас нет никакой переменной за пределами карты, которую мы могли бы использовать в качестве контейнера для хранения значения.

Сначала опишем решение второй задачи.

Мы меняем способ подсчета результатов. у нас есть фактические number и index числа и все arr внутри функции карты.

поэтому мы можем создать этот новый массив:

[ 500000, 60000, 5000, 400, 70, 8 ]

с этой функцией:

(number, index, arr) => number * 10 ** (arr.length - 1 - index)

Последнее, что нам осталось, это просто сложить все числа в массиве вместе и создать окончательное число. поэтому давайте изменим функцию на что-то вроде этого:

eval(arr.map((number, index, arr) => number * 10 ** (arr.length - 1 - index)).join("+"))

Хора мы получаем нужный результат. Но подождите секунду, мы снова сделали преобразование типов дважды!!

Последний и лучший способ — использовать reduce функций массива:

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