简体   繁体   English

在 javascript 中合并两个 arrays

[英]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>.播放脚本的每一行给出如下:<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).创建一个 function,它将根据角色重新组合行,对它们进行编号并以现成文本的形式返回结果(参见示例)。 Each group is displayed as follows:每个组显示如下:

Role:角色:

i) text i) 文本

j) text2 j) 文本2

... ...

== line break == ==换行==

i and j are the line numbers in the script. i 和 j 是脚本中的行号。 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:样品 Output:

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

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

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

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

How do I merge two arrays in JavaScrip?如何在 JavaScrip 中合并两个 arrays?

You could group by the given keys and map along roles.您可以按给定的键和 map 沿角色分组。

 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; }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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