【问题标题】:Replace a string with array values in javascript用javascript中的数组值替换字符串
【发布时间】:2021-12-26 13:17:12
【问题描述】:

我正在尝试通过将字符串的值与数组值连接起来,将字符串的值替换为 javascript 中的数组值。例如:

我的字符串是

var str = 'a*b-ab';
var arrayElement = [['a', 'class 1'], ['b', 'class 12'],['ab', 'class 15'],['ac', 'class 2']]

现在,string(str) 有 a、b、ab,而数组有 a、b、ab、ac。我们需要连接字符串值,如 a、b 和 ab,并从数组中获取它们的描述。我的输出必须是

class 1 * class 12 - class 15

有没有办法在javascript中做到这一点。请帮忙。

【问题讨论】:

    标签: javascript arrays string replace


    【解决方案1】:

    您可以先将arrayElement 转换为Map,这样您就可以轻松地从字符串a、b、ab 等中找到类值。然后您可以将.replace()regular expression 一起使用@987654326 @ 匹配字符串中的单词元素(即:非运算符)。然后,您可以使用函数作为.replace() 的第二个参数来获取匹配的字母,并使用我们制作的 Map 来获取其关联的类:

    const str = 'a*b-ab';
    const arrayElement = [['a', 'class 1'], ['b', 'class 12'],['ab', 'class 15'],['ac', 'class 2']];
    
    const lookup = new Map(arrayElement);
    const res = str.replace(/\w+/g, m => ` ${lookup.get(m)} `).trim();
    console.log(res);

    如果你需要更好的浏览器支持,可以像这样在ES5中重写,很多浏览器都支持,包括IE11:

    var str = 'a*b-ab';
    var arrayElement = [['a', 'class 1'], ['b', 'class 12'],['ab', 'class 15'],['ac', 'class 2']];
    
    var lookup = arrayElement.reduce(function(acc, arr) {
      acc[arr[0]] = arr[1];
      return acc;
    }, {});
    
    var res = str.replace(/\w+/g, function(m) {
      return " " + lookup[m] + " ";
    }).trim();
    console.log(res);

    【讨论】:

    • 嗨@Nick Parsons,这在 chrome 中运行良好,但在 IE 11 中出现语法错误。你能告诉我如何在 IE 11 中使其工作。谢谢
    • @kavya 我在 ES5 中提供了一个适用于 IE11 的版本,它在隐藏代码 sn-p 中
    猜你喜欢
    • 2014-12-31
    • 2010-10-31
    • 1970-01-01
    • 2016-11-17
    • 1970-01-01
    • 2014-02-01
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多