根据重复出现修改数组值
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
个位置,那么就没有5th
和6th
个位置,所以下一个位置将是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]));
我需要根据重复项对数组进行排序。对于每次重复出现,序列必须应用输出数组中指定的模式规则。
输入值:[ 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
个位置,那么就没有5th
和6th
个位置,所以下一个位置将是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]));