简体   繁体   中英

combine merge two arrays in javascript

You are given a list of roles as an array and a play script as a string. Each line of the play script is given as follows: <Role: text>. The text can contain any characters. Create a function that will regroup the lines according to roles, number them and return the result in the form of ready-made text (see example). Each group is displayed as follows:

Role:

i) text

j) text2

...

== line break ==

i and j are the line numbers in the script. Line indexing starts with one, the groups should be displayed in accordance with the order of roles. Line breaks between groups are required, line breaks at the end of the text are not taken into account.

Sample Input:

const roles = ["Городничий", "Аммос Федорович", "Артемий Филиппович", "Лука Лукич"];

const textLines = "Городничий: Я пригласил вас, господа, с тем, чтобы сообщить вам пренеприятное известие: к нам едет ревизор." +
"\n" +
"Аммос Федорович: Как ревизор?" +
"\n" +
"Артемий Филиппович: Как ревизор?" +
"\n" +
"Городничий: Ревизор из Петербурга, инкогнито. И еще с секретным предписаньем." +
"\n" +
"Аммос Федорович: Вот те на!" +
"\n" +
"Артемий Филиппович: Вот не было заботы, так подай!" +
"\n" +
"Лука Лукич: Господи боже! еще и с секретным предписаньем!"

Sample Output:

Городничий: 
1) Я пригласил вас, господа, с тем, чтобы сообщить вам пренеприятное известие: к нам едет ревизор. 
4) Ревизор из Петербурга, инкогнито. И еще с секретным предписаньем.

Аммос Федорович: 
2) Как ревизор? 
5) Вот те на! 

Артемий Филиппович: 
3) Как ревизор? 
6) Вот не было заботы, так подай!

Лука Лукич:
7) Господи боже! еще и с секретным предписаньем!

How do I merge two arrays in JavaScrip?

You could group by the given keys and map along roles.

 const textRole = (roles, textLines) => { const groups = textLines.split('\n').reduce((r, s, i) => { const [, key, value] = s.match(/(^[^:]+):\s*(.*$)/); (r[key] = r[key] || []).push(`${i + 1}) ${value}`); return r; }, {}); return roles.map((role) => [role + ':', ...groups[role], ''].join('\n')).join('\n'); }, roles = ["Городничий", "Аммос Федорович", "Артемий Филиппович", "Лука Лукич"], textLines = "Городничий: Я пригласил вас, господа, с тем, чтобы сообщить вам пренеприятное известие: к нам едет ревизор." + "\n" + "Аммос Федорович: Как ревизор?" + "\n" + "Артемий Филиппович: Как ревизор?" + "\n" + "Городничий: Ревизор из Петербурга, инкогнито. И еще с секретным предписаньем." + "\n" + "Аммос Федорович: Вот те на:" + "\n" + "Артемий Филиппович, Вот не было заботы: так подай," + "\n" + "Лука Лукич, Господи боже. еще и с секретным предписаньем;". result = textRole(roles; textLines).trim(); console.log(result);
 .as-console-wrapper { max-height: 100%;important: top; 0; }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM