Как преобразовать число в массив js
Перейти к содержимому

Как преобразовать число в массив js

  • автор:

Преобразование числа в массив в JavaScript

Преобразование числа в массив заключается в том, что мы разбиваем число на цифры, которые будут являться элементами массива.

Рассмотрим самые популярные подходы осуществления данной операции.

Array.from()

Метод позволяет преобразовать в массив указанный строчный элемент. Поскольку исходные данные числового типа, их необходимо сделать строкой. Однако, чтобы массив состоял из чисел, их необходимо обратно преобразовать. Получается некая двойная конвертация.

const num = 48621; const arrayOfStrings = Array.from(String(num)); // ['4', '8', '6', '2', '1'] - без обратного преобразования получим массив из строк const arrayOfDigits = Array.from(String(num), Number); // [4, 8, 6, 2, 1]

map()

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

let num = 48621; let array = ('' + num).split('').map(function(digit)< return +digit; >); // [4, 8, 6, 2, 1]

Цикл while

Чтобы избежать лишних преобразований в строки, можно воспользоваться циклом while , который будет отрабатывать столько раз, сколько разрядностей у нашего числа. Хитрый способ заключается в том, что на каждой итерации цикла мы делим число на 10 , остаток заносим в массив и уменьшаем разрядность числа.

let num = 48621; let array = []; while(num>0) < array.unshift(num%10); num=num/10|0; >// [4, 8, 6, 2, 1]

Преобразование массива в число в JavaScript

Явно преобразовать массив в число можно только в случае, если элементами массива являются числа, либо строки, которые можно преобразовать в числа.

Для преобразования подойдет метод join() , который позволяет объединить элементы массива. Однако, поскольку на выходе мы получим строку, необходимо дополнительно ее преобразовать в число, например с помощью унарного оператора + .

let array1 = [1, 2, 3, 4, 5]; array1.join(''); // '12345' - получим строку +array1.join(''); // 12345 - получим число let array2 = ['1', 2, '345']; +array2.join(''); // 12345

Если массив состоит из строк, содержащих не только числа, необходимо массив перебрать и для каждого элемента воспользоваться одним из способов преобразования строки в число. Рассмотрим случай, когда подойдет метод match() .

let array = ['33 коровы', '4 таракана и 1 сверчок', 'в октете 8 человек']; array.map(item => item.match(/\d/g).join('')); // ['33', '41', '8'] +array.map(item => item.match(/\d/g).join('')).join(''); // 33418

Если в массиве есть и число и строка, то вначале делаем из массива строку (о способах в этой главе), а потом из нее число.

let array = ['33 коровы', '4 таракана и 1 сверчок', 987]; let string = array.toString(); // '33 коровы,4 таракана и 1 сверчок,987' let number = +string.match(/\d/g).join(''); // 3341987

Как числа преобразовать в массив?

Суть в том, что не могу получить полный массив из чисел. Что только не перебирал для этого, но он заносит только первое значение в массив. Как решить данную проблему? Пытался преобразовать в строку, но тоже выводит только 1 значение.

function mostNumbers(numbers) < var arr = [numbers]; console.log(arr); >console.log(mostNumbers(1, 2, 3));

Отслеживать
72.7k 12 12 золотых знаков 92 92 серебряных знака 180 180 бронзовых знаков
задан 11 дек 2017 в 19:47
Vladislav Zhuravlev Vladislav Zhuravlev
53 1 1 золотой знак 1 1 серебряный знак 4 4 бронзовых знака

4 ответа 4

Сортировка: Сброс на вариант по умолчанию

function mostNumbers() < return Array.from(arguments); >console.log(mostNumbers(3, 2, 7));

Отслеживать
ответ дан 11 дек 2017 в 20:35
Rostyslav Kuzmovych Rostyslav Kuzmovych
5,980 1 1 золотой знак 19 19 серебряных знаков 26 26 бронзовых знаков

function mostNumbers() < return [. arguments]; >console.log(mostNumbers(3, 2, 7));
function mostNumbers(. numbers) < return numbers; >console.log(mostNumbers(3, 2, 7));

Проблема данных методов на данном этапе, что нет проверки на тип. Поэтому либо надо доверять тому, что приходит в функцию, либо делать проверку, а это цикл ¯\_(ツ)_/¯

Отслеживать
ответ дан 11 дек 2017 в 20:52
Алексей Шиманский Алексей Шиманский
72.7k 12 12 золотых знаков 92 92 серебряных знака 180 180 бронзовых знаков
Или писать на TypeScript ))
18 дек 2017 в 17:12

function mostNumbers() < var arr = []; for (var i = 0; i < arguments.length; i++) < arr.push(arguments[i]); >return arr; > console.log(mostNumbers(1, 2, 3));

Отслеживать
ответ дан 11 дек 2017 в 20:18
user176262 user176262
Спасибо,теперь стало все понятно))
11 дек 2017 в 21:09

Дело в том, что в твоем примере функция всегда принимает только один параметр, сколько бы ты их ни передавал в функцию. Это ты и наблюдаешь.

Почитай про функции с произвольным кол-вом параметров и как получить к ним доступ, например: https://learn.javascript.ru/arguments-pseudoarray

Т.е. узнаешь кол-во параметров, создаешь массив нужного размера, а потом в цикле заполняешь.

Ну или передавай как параметр сразу массиы целиком,

Отслеживать
ответ дан 11 дек 2017 в 20:21
37.5k 4 4 золотых знака 28 28 серебряных знаков 76 76 бронзовых знаков

Спасибо за совет, потихоньку дохожу уже до этих статей)) Но суть задачи заключалась именно в том, чтобы передавать 1 параметру несколько чисел

Как преобразовать строку в массив js?

Для того, чтобы преобразовать строку в массив, нужно сначала определить, по какому критерию строка будет разбиваться на элементы. Например, строку можно разбить на подстроки, между которыми встречается разделитель:

const str = 'мама мыла раму'; // исходная строка const result = str.split(' '); // используем метод split с указанием разделителя // ['мама', 'мыла', 'раму'] 

В примере выше использовался метод split для разделения строк на элементы по определенному разделителю. Если указать в качестве разделителя пустую строку, то на выходе получим массив из символов:

// вызываем метод на строке и выводим результат console.log('test'.split('')); // => ['t', 'e', 's', 't'] 

Также строки имеют некоторые свойства массивов: их можно перебирать в циклах а также можно обращаться к символам через индексы:

// перебираем строку в цикле for (const symbol of 'test')  console.log(symbol); > // обращение по индексу console.log('test'[1]); // => 'e' 

Есть также быстрый способ разбить строку на символы с использованием рест-оператора:

const result = [. 'hello']; // ['h', 'e', 'l', 'l', 'o']; result.forEach((item) => console.log(item)); 

19 октября 2022

Помимо вышеупомянутых способов преобразования строки в массив, есть ещё один метод, которым можно воспользоваться.
Это Array.from():
Данный метод работает очень просто. Вся его работа описана в примере ниже:

const stringOfNumbers = '1234'; const numbers = Array.from(stringOfNumbers); console.log(numbers); // => ['1', '2', '3', '4'] - элементы массива - строки 

У данного метода есть особенность, которая может показаться недостатком.
Если в строке между словами, буквами или цифрами будут знаки препинания либо пробелы, они также станут элементами массива.

const stringOfNumbers = '1 2.3,4'; const numbers = Array.from(stringOfNumbers); console.log(numbers); // => ['1', ' ', '2', '.', '3', ',', '4'] 

Добавить комментарий

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