javascript - 在地图的回调中访问地图的输出数组 - JS
问题描述
我有一个以下函数,它遍历数组并对与我想要填充的数组相关的项目进行一些工作,如下所示:
function fileNaming(names) {
const result = [];
names.forEach(name => {
let count = 0;
const curr = name;
if (result.includes(name)) {
while (result.includes(name)) {
count++;
name = `${curr}(${count})`;
}
}
result.push(name);
})
return result;
}
我想摆脱result
数组并像这样只使用地图:
function fileNaming(names) {
return names.map(name => {
let count = 0;
const curr = name;
// In the following 2 lines we will get error because we don't have result array anymore
if (result.includes(name)) {
while (result.includes(name)) {
count++;
name = `${curr}(${count})`;
}
}
return name;
})
}
但问题是我需要检查输出数组中的某些内容,但我不知道该怎么做。我试图找到类似的问题,但没有找到任何东西,我也尝试在 map 方法的 pollifils 中进行挖掘,但到处都是一个带有一些result
我可以访问的数组的循环。
解决方案
或者,您可以使用reduce
&filter
function fileNamingDup(names) {
return names.reduce((acc, curr) => {
if (acc.includes(curr)) {
acc.push(`${curr}(${acc.filter(elem=>elem===curr).length+1})`)
} else {
acc.push(curr);
}
return acc;
}, []);
}
console.log(fileNamingDup(['a', 'b', 'a', 'a']));
推荐阅读
- mysql - 如何导出 Postgresql 数据库,以便在 MySQL 中使用?
- html - WordPress style.css 中的预期 RBRACE 错误
- docker - Docker Compose - getaddrinfo 失败:名称或服务未知
- ruby-on-rails - How to reduce select commands in a Simple one table query. Rails
- spring-boot - jsf primefaces和Spring Boot项目组件注入问题
- jquery - 在文本输入上使用 jquery 进行 contenteditable 并包含特定文本显示 div
- python - 在没有 Pandas 的情况下清理 CSV 中的数据
- python - 存储包含数据帧的字典的最有效方法
- terraform-provider-azure - 有没有办法在 terraform 中定义允许的值?
- python - Python odeint 函数在求解耦合微分方程时不起作用