Дан массив строк, который содержит строки вида
(10)aaa
(2)bbbbb
(10)ccccccc
(30001)dddd
(30001)eeeeee
т.е. в начале строки в скобках идет номер, а затем строка (числа и строки мо-гут быть любыми). Исходные данные наберите сами. Создайте на их основе объект в котором, свойствами будут числа (номер в скобках, в начале которого поставить символ ‘p’), а значениями – массив строк (строки с одинаковыми номерами нужно помещать в один массив).
В итоге должно получиться
(10p)aaa
JavaScript
Наконец, мы выводим полученный объект в консоль.

Я очень и очень и очень хреново разбираюсь в регулярных выражениях, это можно сказать мое большое слабое место. Поэтому не могу сказать, что это самый эффективный вариант решения, зато работает с любыми скобками.
Помогите сделать задание по js
const strings = ['(10)aaa', '(2)ccc', '(2)bbbbb'];
// создаем пустой объект, в который будем добавлять свойства
const obj = {};
// проходимся по каждой строке
strings.forEach(str => {
// извлекаем число в скобках и сам текст
const match = str.match(/\((\d+)\)(.+)/);
const num = parseInt(match[1]);
const text = match[2];
// если свойство с таким числом уже существует, добавляем текст к массиву значений
if (obj[`p${num}`]) {
obj[`p${num}`].push(text);
} else { // иначе создаем новое свойство
obj[`p${num}`] = [text];
}
});
console.log(obj); // {p10: ['aaa'], p2: ['ccc', 'bbbbb']}
В этом примере мы сначала создаем пустой объект, в который будем добавлять свойства. Затем мы проходимся по каждой строке и извлекаем число в скобках и сам текст, используя регулярное выражение. Затем мы проверяем, существует ли уже свойство с таким числом в объекте. Если да, то мы добавляем текст к массиву значений этого свойства. Если нет, то мы создаем новое свойство и добавляем его в объект. Наконец, мы выводим полученный объект в консоль.
Паша Алиев
А можно ли вывести результат на html страничке?
Паша Алиев
Хороший вопрос) спасибо
const obj = {};
const arr = [
'(10)aaa',
'(2)bbbbb',
'(10)ccccccc',
'(30001)dddd',
'(30001)eeeeee'
];
for (let str of arr) {
const regexp = str.match(/\d+/);
const len = str.length - regexp[0].length - 2;
const key = 'p' + regexp[0];
const value = str.slice(-len);
obj[key] ?
obj[key].push(value) :
obj[key] = [value];
}

Я очень и очень и очень хреново разбираюсь в регулярных выражениях, это можно сказать мое большое слабое место. Поэтому не могу сказать, что это самый эффективный вариант решения, зато работает с любыми скобками.
const arr = [
'(10)aaa',
'(2)bbbbb',
'(10)ccccccc',
'(30001)dddd',
'(30001)eeeeee'
];
let obj=arr.reduce((a,e)=>{
let r=e.split(/[\)\(]+/);
r[1]=r[1]+'n';
if(a.hasOwnProperty(r[1])){
a[r[1]].push(r[2])}
else{
a[r[1]]=[r[2]]}
return a},{});
console.log(obj);//{10n: Array(2), 2n: Array(1), 30001n: Array(2)}
Похожие вопросы
- Ребят помогите с кодом пожалуйста (JS, Googl Apps Sсript)
- Помогите решить задачку по js
- Как сделать таймер на js
- Помогите решить задачу по js! Программа выводит все заглавные буквы в тексте. Как распределить эти буквы по алфавиту?
- Помогите написать код на JS
- Пожалуйста, помогите решить задачку по JS, это срочно
- Помогите с задачей по js
- Помогите решить задачку по JS
- Помогите определиться с выбором нового языка (JS(TS) vs Java)
- Зачем разработчики js сделали так что там где могли быть функции они добавили методы встроенных объектов.