【问题标题】:Javascript - Remove Special characters and associated strings in Json objectJavascript - 删除 Json 对象中的特殊字符和相关字符串
【发布时间】:2019-07-26 09:38:21
【问题描述】:

我正在尝试修复并获得预期的结果,但失败了。

let sample obj= 
[{ profile: admin, availableAction: 'You have [Access: write][Option: print] only few options'},
{ profile: cust, availableAction: 'You have [Access: write][Option: print] only few options'}
]

我只想打印'You have only few options'

为了达到这个目的,我尝试了以下可能的方法但失败了

  for (let key in obj) {
      if (obj.hasOwnProperty(key)) {
          console.log('KEY---->', key + ' -> ' + obj[key]);

          if (obj.includes('[Access: write][Option: print] ')) {
            obj = obj.replace(/\[(.*)\]/, '');
          }
      }
  } 

但出现无法读取属性错误。

谁能告诉我如何正确解决这个问题。

注意:我知道它的重复线程,我尝试了尽可能多的 SO 解决方案。但无法有效利用。

提前致谢

【问题讨论】:

    标签: javascript regex typescript pattern-matching


    【解决方案1】:

    您可以利用可以传递给JSON.stringifyreplacer 函数。字符串化后,您可以使用 JSON.parse 将 JSON 字符串解析回对象

    let obj = [
      { profile: "admin", availableAction: 'You have [Access: write][Option: print] only few options'},
      { profile: "cust", availableAction: 'You have [Access: write][Option: print] only few options'}
    ];
    
    
    
    const result = JSON.parse(JSON.stringify(obj, (k, v) =>
      (k === "availableAction") 
        ? v.replace('[Access: write][Option: print] ', '') 
        : v
    ));
    
    console.log(result)

    【讨论】:

    • 非常感谢,你拯救了我的一天。你能告诉我为什么我的正则表达式没有帮助吗?
    • 没问题。您的正则表达式很好,问题的根本原因是您在第二个 if 语句中引用了对象 (obj) 而不是对象属性 (obj[key])。如果您相应地修改它:if (obj[key].includes('[Access: write][Option: print] ')) obj[key] = obj[key].replace(/\[(.*)\]/, ''); 它应该可以按预期工作。
    • 再次感谢您的解释和解决方案 :)
    猜你喜欢
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 2011-04-11
    • 2016-01-23
    相关资源
    最近更新 更多