【问题标题】:String replace on a loop [duplicate]循环上的字符串替换[重复]
【发布时间】:2017-03-12 03:34:21
【问题描述】:

我有以下代码,如果我手动尝试agreements.replace('{customername}', 'some string'); 一切正常,猜猜由于某种原因字符串没有被替换。

  var keywords = [
    {
      key: '{customername}',
      desc: 'Customer Name',
      map: 'user_name'
    },

    {
      key: '{vesselname}',
      desc: 'Customer Vessel Name',
      map: 'vessel_name'
    }
  ];

  var parseData = {
    user_name: "Some name",
    vessel_name: "Some Vessel",
    spot_title: "My Spot",
    today: new Date().toDateString()
  };

  var agreements = "{customername}, some customer, {vesslname} -> here";

  for(var i = 0; i < keywords.length; i++) {
    console.log(keywords[i]['key'], parseData[keywords[i]['map']]);

    agreements.replace(
        keywords[i]['key'],
        parseData[keywords[i]['map']]
    );
  }

  alert(agreements);

请忽略我正在添加更多细节,stackoverflow 使它成为一个要求,有趣...

【问题讨论】:

  • .replace 返回新字符串并且不替换原始字符串。只需将其分配回去
  • @Rajesh 哦,来吧,呵呵。 =)
  • @Rajesh 谢谢,刚刚成功。
  • 没关系。另外,我已要求删除答案。完成后,请删除问题,因为它不会对门户增加太多
  • 当然。 js不一致吗?至少在我看来,对数组进行排序确实会改变实际数组,例如:arr = [3, 2, 1]; arr.sort(); console.log(arr); 输出:[1, 2, 3],但str = "a b c"; str.replace('a', 'z'); 不会改变原始变量。

标签: javascript arrays replace str-replace


【解决方案1】:

把代码改成这样:

  agreements = agreements.replace(
        keywords[i]['key'],
        parseData[keywords[i]['map']]
    );

【讨论】:

  • 只是一个指针,你不应该回答有明显错误的问题。而是搜索已经回答的帖子并分享其链接。很快,您将获得结束投票的权利。拥有它们后,只需将其标记为重复。另外,如果不是很麻烦,请删除答案。我知道这没有错,但这个问题没必要。
猜你喜欢
  • 2020-10-08
  • 2019-03-17
  • 2017-08-15
  • 1970-01-01
  • 2018-09-10
  • 1970-01-01
  • 2011-10-10
  • 2012-06-06
  • 1970-01-01
相关资源
最近更新 更多