javascript - 如何在 Vanilla Js 中通过 replace() 使用动态数据更改重复项
问题描述
我需要解决一个问题,现在我尝试描述任务本身。
我的任务是创建一个函数,将字符串变成墨西哥波 -维基百科链接
输入(字符串)=> 输出([数组])
例如 Input('wow') => Output('Wow', 'wOw', 'woW')
现在我创建了函数,一切都很好,除了重复和空格
function wave(str) {
let arr = [];
let arrUpperSymbols = [];
let res = [];
for (let i = 0; i < str.length; i++) {
arr.push(str);
arrUpperSymbols.push(arr[i].charAt(i).toUpperCase());
res.push(arr[i].replace(arr[i].charAt(i), arrUpperSymbols[i]));
}
console.log(res);
}
wave("sigrid");
它的返回 ["Sigrid","sIgrid",siGrid","sigRid","sIgrid","sigriD"] 但我需要大写一个字母一个接一个地循环并动态复制,我试过 wrapp arr[i ].charAt(i) 在 //g 但它不起作用。
我将不胜感激任何帮助,谢谢!!!
解决方案
最好使用它slice
来更新字符串的任何特定索引处的任何值。原样返回当前字母前后的字符串部分,并更改当前索引处的字母。
function wave(str) {
let res = [];
for (let i = 0; i < str.length; i++) {
res.push(str.slice(0, i) + str[i].toUpperCase() + str.slice(i + 1));
// ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^
// part before i letter at i part after i
}
console.log(res);
}
wave("sigrid");
您还可以在长度上创建一个数组str.length
并在其上使用map()
。
const wave = str => Array(str.length).fill().map((x,i) => str.slice(0, i) + str[i].toUpperCase() + str.slice(i + 1))
console.log(wave("sigrid"));
推荐阅读
- python - 使用传递给处理程序的参数 - Odoo
- javascript - 动态获取表头并动态添加行
- angular - 广播服务不适用于角度的“MSAL”
- python - pytorch Pretrained Resnet 与 Imagenet 的精度不同
- laravel - 当我一次上传多个文件时,为什么 Laravel 只存储最后一个文件?
- sql - SqlAlchemy 外连接查询问题过滤
- blazor - 指定 DataAnnotationsValidator 应验证的属性
- macos - 是否可以在 macOS 上构建和安装 TensorFlow 2.0 gpu?
- api - Evernote API:AttributeError:“Store”对象没有属性“getNoteWithResultSpec”
- sharepoint - 如何在 Sharepoint 中创建现代网页并使用 sharepoint API 向其中添加 Web 部件?