javascript - 遍历数组并编辑字符串
问题描述
我有这个变量:
WelcomeText = 'Hi $0! Welcome to $1!';
我正在尝试创建此功能:
translate(WelcomeText, 'Daniel', 'Budapest');
哪个应该返回:
'Hi Daniel! Welcome to Budapest!'
我试图制作这个应该支持无限参数替换的函数:
export const translator = (str, ...args) => {
let translate = args.map((item, index) => {
let stringToReplace = '$' + index;
let result = str.replace(stringToReplace, item);
return result;
});
console.log(translate);
};
但这给了我这个:
["Hi Daniel! Welcome to $1", "Hi $0! Welcome to Budapest"]
不知道如何解释它,但我已经说不出话了,所以我希望你能理解我上面的问题:)
我在这里做错了什么,我需要做什么才能达到我想要的结果?
解决方案
您可以简单地使用 forEach 代替
let WelcomeText = 'Hi $0! Welcome to $1!';
const translator = (str, ...args) => {
args.forEach((item, index) => {
let stringToReplace = '$' + index;
str= str.replace(stringToReplace, item);
});
console.log(str);
};
translator(WelcomeText, 'Daniel', 'Budapest');
由于您在原始代码中使用 map ,因此它在每次迭代时都会返回一个新字符串,并且您最终会得到一个字符串数组,实际上您需要获取一个替换所有$
(索引)实例的字符串,因此您应该使用在下一次迭代中替换字符串
推荐阅读
- php - 如何将 api json 插入我的数据库
- html - Flexbox 最佳填充
- android - 如何更改 google.android.material.textfield.TextInputLayout 线条颜色
- c# - 您可以使用 MVVM 模式将多个 LineSeries 绑定到 WPF 中的 oxyplot 吗?
- javascript - 如何在 Javascript / nodejs 中声明实例变量?
- oracle-sqldeveloper - 无法启动/连接到 Oracle 数据库 - Windows 10 / Oracle 18 XE / SQL Developer
- python-multiprocessing - Python多处理如何在不使用.join()方法的情况下更新管理器列表中的复杂对象
- php - laravel 6.5 显示带有问号的编辑 url
- c++ - “警告:函数的实例化......这里需要,但没有可用的定义”是什么意思?
- php - 通过浏览器使用 php 用 google 翻译