根据重复出现修改数组值

Modify array values based on the duplicate occurrence

我需要根据重复项对数组进行排序。对于每次重复出现,序列必须应用输出数组中指定的模式规则。

输入值:[ 1, 2, 2, 3, 4, 4, 5 ]
输出值:[ 1, 2, 2, 4, 5, 5, 7 ]

输入值:[ 1, 2, 2, 2, 3, 4, 4, 5 ]
输出值:[ 1, 2, 2, 2, 5 ,6, 6, 8 ]

输入值:[1, 1, 1, 2, 3, 4]
输出值:[1, 1, 1, 4, 5, 6]

需要根据输出中重复值的计数动态设置输出。假设在 1 之后有 3 2's 那么在 2 之后序列必须有 5.

想像这样的场景,如果考试结果中有 2 4th 个位置,那么就不会有 5th 个位置,所以在两个数字 [=24] 并列之后=]会有5th个位置

另一个例子是,如果有3 4th 个位置,那么就没有5th6th 个位置,所以下一个位置将是7th位置。

这是一个使用 Array#reduce 的解决方案:

const rank = arr => arr.reduce((acc, cur, i) => {
  acc.push(cur === arr[i - 1] ? acc[i - 1] : i + 1);
  return acc;
}, []);

console.log(rank([1, 2, 2, 3, 4, 4, 5]));
console.log(rank([1, 2, 2, 2, 3, 4, 4, 5]));
console.log(rank([1, 1, 1, 2, 3, 4]));