Массив чисел в массив из одной строки

Мне нужно [1, 2, 3] перейти к ['123']. Я должен вернуть [1, 2, 3] к ['123'] при использовании функции стрелки (без регулярного выражения):

Должен быть использован:


const functionOne = (arrayOne) => {

};

console.info(functionOne([1, 2, 3]));

Итак, я попробовал следующее:

Сначала я создал строку. Это дало мне 1,2,3

Затем я убрал запятые, чтобы можно было соединить числа. Это дало мне 123.

Наконец, я попытался вернуть число в виде строки в массив, но это не сработало. Это дало мне ['1', '2', '3'] вместо ['123']. Я думаю, что метод .split неверен в моем коде, но я не могу найти другого (в настоящее время изучаю JavaScript).

const functionOne = (arrayOne) => {

  let stepOne = arrayOne.toString(arrayOne => arrayOne.toString());

  console.info(stepOne);

  stepOne = stepOne.split(',').join('');

  console.info(stepOne);

  return stepOne.split('');

};

console.info(functionOne([1, 2, 3]));

Почему вы разделяете объединенную строку? Кроме того, .toString(arrayOne => arrayOne.toString()); кажется излишним. Не могли бы вы использовать return [arrayOne.join('')]?

evolutionxbox 03.02.2023 18:01

Я присоединился к строке, чтобы удалить запятую. Итак, вместо жала 1,2,3 я получу строку 123.

Donut 03.02.2023 18:03
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
72
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы можете присоединиться к, используя "" в качестве разделителя (он автоматически преобразует элементы в строки по мере создания выходной строки), а затем поместить результат в массив в качестве его единственного элемента ([____]):

const functionOne = (array) => [array.join("")];
console.info(functionOne([1, 2, 3]));

Проблемы с вашим оригинальным подходом:

  • Массив toString полностью игнорирует аргумент, который вы ему даете, вместо этого используя поведение по умолчанию join(",").
  • Разделение его на , снова возвращает вам массив, но на этот раз строк.
  • Присоединение к этому с помощью join('') дает вам "123", но не помещает его в массив.

@terpinmd - У меня сложилось впечатление, что ОП хочет создать для этого функцию (например, для повторного использования). Итак, первая линия делает это. Второй показывает, как используется функция. Но да, конечно, вы можете сделать это и встроенным.

T.J. Crowder 03.02.2023 18:51
const functionOne = (arrayOne) => {
  let stepOne = arrayOne.toString();
  stepOne = stepOne.split(',').join('');
  return [stepOne];
};

console.info(functionOne([1, 2, 3]));

Метод .toString() преобразует массив [1, 2, 3] в строку «1,2,3», затем .split(',').join('') удаляет запятые и объединяет числа как одна строка "123". Наконец, верните [stepOne]; возвращает строку "123" внутри массива ['123'].

Нет необходимости создавать строку, затем создавать другой массив, а затем снова создавать строку. Посмотрите ответ CW, который я опубликовал несколько минут назад, все, что вам нужно, это [arrayOne.join("")].

T.J. Crowder 03.02.2023 18:09

На самом деле нет необходимости выполнять все шаги, и ваш ответ/код усовершенствован, но я попытался сделать код более понятным (imo), поскольку оператор упомянул, что они изучают javascript.

sylveon 03.02.2023 18:13

Спасибо TJ и Sylveon за вашу помощь. Я отметил, что нет необходимости выполнять шаги, которые я изначально заложил в свой код. [arrayOne.join("")] позволяет напрямую вернуть [1, 2, 3] в ["123"]. Спасибо.

Donut 03.02.2023 18:27

@Sylveon Я согласен. Совершенно очевидно, что ОП изучает js. Это всего лишь еще один вариант выполнения задачи.

terpinmd 03.02.2023 18:47

Вы можете взять рекурсивную функцию.

const
    fn = ([v, ...rest]) => rest.length
        ? [v + fn(rest)]
        : [v];

console.info(fn([1, 2, 3]));

Да, но... зачем? :-)

T.J. Crowder 03.02.2023 18:11

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

Nina Scholz 03.02.2023 18:18

Другие вопросы по теме