javascript - Javascript:将数组中的 2 个索引组合成 1 个索引。例如 ['2', '3', '5', '(G1)', '2'] 变成 ['2', '3', '5 (G1)', '2']
问题描述
第一次在这里发帖,所以提前感谢您的帮助。我正在使用 Javascript。
我有一个数组:[ '2', '3', '5', '(G1)', '2']
我想变成['2', '3', '5 (G1)', '2']
换句话说,我想将索引 2 和 3 合并到一个索引中。每当 G1/G2/G3 出现在数组中时,我想将它与前一个数字连接起来。
这可能吗?
编辑:我之前曾尝试搜索加入和合并索引,但我没想过搜索 .reduce 或 .match 等。我也浏览了这里的其他帖子,看看之前是否有人问过类似的问题。我下次提供的细节会更加小心(即所有数组项都是字符串)。
感谢那些花时间回答的人,解决方案提供了工作。
解决方案
如果 G 弦(起初没有双关语……)总是以括号开头,而其他字符串不会,那么我们可以通过该括号匹配并减少字符串。你会连续有多个丁字裤吗?
这里的步骤是:
- 检查每个当前值是否以 开头
(G
和结尾)
。 - 如果是这样,我们会将该字符串添加到之前的 value
a[a.length-1]
中,并用一个空格分隔。 - 如果没有,我们将简单地将项目正常推送到累加器数组。
- 每次迭代,我们都会返回更新后的 accumulator
a
。
这应该适用于您提供的示例:
let before = ['2', '3', '5', '(G1)', '2'];
let after = before.reduce((a,c,i) => ((i && c.slice(0,2) === "(G" && c.slice(-1) === ")" ? (a[a.length-1] = `${a[a.length-1]} ${c}`) : a.push(c)), a), []);
console.log(after);
输出:
['2', '3', '5 (G1)', '2']
这也适用于更复杂的示例,其中 G 字符串可能是第一项,因此我们将正常将其推送到数组中,并且一行中可能有多个 G 字符串:
let before = ['(G1)', '2', '3', '5', '(G2)', '(G3)', '2', '(G4)', '6'];
let after = before.reduce((a,c,i) => ((i && c.slice(0,2) === "(G" && c.slice(-1) === ")" ? (a[a.length-1] = `${a[a.length-1]} ${c}`) : a.push(c)), a), []);
console.log(after);
输出:
['(G1)', '2', '3', '5 (G2) (G3)', '2 (G4)', '6']
推荐阅读
- jenkins - Jenkins 脚本化流水线:Groovy if 语句
- plot - spss:导出cox回归生存函数图点
- r - 为什么我不能在 R 中将两个文件与 left_join 合并?
- c++ - realloc 在 C++ 中关于额外空间的行为如何?
- javascript - 单击弹出对话框时,ReactJs down 元素被选中
- django - 如何在发送邮件之前验证电子邮件并查找邮件是否发送 - django
- python - 熊猫重复显示非重复行
- macos - 找不到证书提供程序 Mac OS
- r - 我的列的总和似乎没有在 R 中给我正确的结果
- mocha.js - 如何在报告中获取运行详细信息和日志,而不是显示方法本身