2 回答
TA贡献1890条经验 获得超9个赞
您可以拿一个物体来跟踪步骤。
要获取一封信,您可以使用toString基数 36。
let steps = [0, 0, 0, 1, 1, 2, 3, 4, 5, 5],
stepCount = {};
steps = steps.map((step, i, a) => {
if (step !== a[i - 1] && step !== a[i + 1]) return 'Step ' + (step + 1);
stepCount[step] = stepCount[step] || 0;
return 'Step ' + (step + 1) + (stepCount[step]++ + 10).toString(36).toUpperCase();
});
console.log(steps);
.as-console-wrapper { max-height: 100% !important; top: 0; }
TA贡献1828条经验 获得超4个赞
使用Array.reduce,您可以获得重复项的计数,并根据该数据,可以得到如下结果。
let steps = [0, 0, 0, 1, 1, 2, 3, 4, 5, 5]
const groupBy = steps.reduce((acc, cur) => {
acc[cur] ? acc[cur] ++ : acc[cur] = 1;
return acc;
}, {});
const output = Object.entries(groupBy).flatMap(([ step, count ]) => {
return count === 1 ? `Step ${+step + 1}` : Array.from({length: count}, (_, i) => i).map((index) => `Step ${+step + 1}${String.fromCharCode(65 + index)}`);
});
console.log(output);
.as-console-wrapper { max-height: 100% !important; top: 0; }
添加回答
举报