Разделить массив javascript с помощью регулярных выражений

Я пытаюсь разделить этот массив на 2 или 3 части и застрял. Это то, что у меня есть до сих пор: если я использую одну из линий сращивания, она работает, но если я использую все для тестирования, то нет. Я хочу:

  1. захватить все перед оператором и объединить в одно число - переменную
  2. возьмите все после оператора и объедините в одно число - переменную
  3. возьмите оператор и дайте ему отдельную переменную
const re = /^(\+/\-\*)$/

let store1 = ["7", "1", "+", "9", "6"]
store2 = store1.splice(0, store1.indexOf(re));

// This does not work all at once, only if one line is uncommented
//store2 = store1.splice(0, store1.indexOf('+'));
//store2 = store1.splice(0, store1.indexOf('-'));
//store2 = store1.splice(0, store1.indexOf('*'));
//store2 = store1.splice(0, store1.indexOf('/'));

console.info(store1)
console.info(store2)

Я попробовал то, что разместил в коде, попробовал повернуть array.toStrings() и выполнить цикл, но пока не могу в этом разобраться.

Я не уверен, что такое array.toStrings(), но, возможно, вы имеете в виду store1.join("").

fdomn-m 20.06.2024 12:12

Вы не разделяете массивы с помощью регулярных выражений. Вы можете разделить строки с помощью регулярного выражения.

Wiktor Stribiżew 20.06.2024 12:13

каков ваш ожидаемый результат

Jaromanda X 20.06.2024 12:14
Поведение ключевого слова "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) для оценки ваших знаний,...
0
3
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Учитывая, что формат «массива» выглядит как строка, возможно, будет проще проанализировать его как строку, используя слегка измененное регулярное выражение.

Чтобы преобразовать массив в строку без разделителей, используйте .join("")

const re = /(\+|\-|\*)/;
let store1 = ["7", "1", "+", "9", "6"];

console.info(store1.join("").split(re))

При необходимости вы можете затем использовать назначения деструктуризации (SO-ответ) для преобразования массива в отдельные переменные (при условии, что у вас есть только простой num op num):

let [ v1, op, v2 ] = [...store1.join("").split(re)]

Фрагмент:

const re = /(\+|\-|\*)/;
let store1 = ["7", "1", "+", "9", "6"];

let [ v1, op, v2 ] = store1.join("").split(re);

console.info(v1, op, v2);

Кстати, вы можете просто использовать let [ v1, op, v2 ] = store1.join("").split(re);, не распределяя его в массив.

Nick Parsons 20.06.2024 12:19

@NickParsons спасибо за совет — я впервые использовал это let [ .. ] для назначения нескольких переменных. Теперь вы говорите "в массив" это очевидно - не нужно конвертировать массив в массив. Та

fdomn-m 20.06.2024 12:27

Я ценю помощь @fdomn-m. Мне нужно будет потратить некоторое время на изучение использования регулярных выражений и того, как вы использовали разделение соединения для решения этой проблемы.

Jermain Singleton 21.06.2024 18:22
.join(separator) преобразует массив в строку, использование "" означает отсутствие разделителя. Регулярное выражение - это просто «один из + - или * в любой позиции», `\` присутствует, потому что в противном случае они имеют значения в регулярном выражении.
fdomn-m 22.06.2024 12:39

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