【发布时间】:2022-01-22 17:27:02
【问题描述】:
输入: ["doc", "doc", "image", "doc(1)", "doc"]
输出: ["doc", "doc(1)", "image", "doc(1)(1)", "doc(2)"]
问题:
{used[name]++}这部分代码在骗我。
我不明白行以及我如何不将 1 分配给第一件事
代码在反复试验中以应有的方式工作;但我很难将我的大脑包裹在这个循环中。
我的理解:
我们遍历名称,然后是每个以 docs 开头的名称;我们将 newName 分配给 doc1
我尝试了什么:
used[newName] = 6;
结果: [文档,文档(6),图像,文档(1),文档(7)]
这最终让我更加困惑。时间不早了,我可能需要睡一会儿。
const solution = names => {
const used = {};
return names.map(name => {
let newName = name;
while (used[newName]) {
newName = `${name}(${used[name]++})`;
}
used[newName] = 1;
return newName;
});
};
【问题讨论】:
标签: javascript object while-loop increment