首页 > 解决方案 > 遍历数组并编辑字符串

问题描述

我有这个变量:

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"]

不知道如何解释它,但我已经说不出话了,所以我希望你能理解我上面的问题:)

我在这里做错了什么,我需要做什么才能达到我想要的结果?

标签: javascript

解决方案


您可以简单地使用 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 ,因此它在每次迭代时都会返回一个新字符串,并且您最终会得到一个字符串数组,实际上您需要获取一个替换所有$(索引)实例的字符串,因此您应该使用在下一次迭代中替换字符串


推荐阅读