【发布时间】:2021-11-03 16:24:45
【问题描述】:
输入是一个包含三种类型字符串的数组:带有附加数字的字母 L、带有附加数字的字母 R 和带有附加数字的字母 D。这些字符串可能会重复。任务是编写一个函数,该函数将采用相邻的 D 并将它们减少为一个 D,并使用之前存在的 D 的更新数字。 注意只有相邻的 Ds 应该被减少和计数。我想要的输出示例:
input: ['D1', 'D1', 'L1', 'D1', 'D1', 'D1', 'R1']
output: ['D2', 'L1', 'D3', 'R1']
input: ['R1', 'D1', 'L1', 'D1', 'D1', 'D1', 'D1', 'L1', 'R1', 'D1', 'D1', 'D1']
output: ['R1', 'D1', 'L1', 'D4', 'L1', 'R1', 'D3']
显然我的函数不起作用有两个主要原因:在循环时拼接数组(我试图摆脱过多的 Ds),并且我在最后一次迭代时强制函数在数组范围之外查看(arr[i+1].charAt(0) === 'D')。我无法克服这些问题。
function reduceD(arr) {
for (i = 0; i < arr.length; i++) {
let str = arr[i];
if (arr[i].charAt(0) === 'D' && arr[i+1].charAt(0) === 'D') {
arr[i] = 'D' + (Number(str[1]) + 1);
arr.splice(i+1, 1);
}
}
return arr;
}
【问题讨论】:
标签: javascript arrays duplicates