簡體   English   中英

循環通過 Object 並根據給定數組中的正則表達式替換值

[英]Loop through Object and replace values based on Regex in given Array

我有一個 object 和一個數組。 我嘗試遍歷 object 鍵,將它們與數組中的正則表達式進行檢查,然后替換字符串。 到目前為止我所擁有的:

let event = {
  "firstKey":"1",
  "secondKey": {
    "a":"one",
    "b":"two",
    "c":"three"
  },
  "id":111934444,
  "count":1,
  "location":"https://www-domain-org/username=steven&tel=1234",
  "title":"lastname=hey",
  "sd":"24-bit"
};
    
let myReg = [
  {
    name: 'telephone',
    reg: /((tel=)|(telephone=))[\d\+\s][^&\/\?]+/gi,
    group: '$1'
  },
  {
    name: 'names',
    reg: /((username=)|(lastname=))[^&\/\?]+/gi,
    group: '$1'
  }
];
    
let secret = function(obj){
  Object.values(obj).forEach(function(val) {
    myReg.forEach(function(regTest) {
      val = val.toString();
      val = val.replace(regTest.reg, regTest.group + '[redacted ' + regTest.name + ']');
    });
  });
  return obj;
}

let newEvent = secret(event);
console.log(newEvent);

我沒有得到帶有替換值的原始 Object。 我的代碼有什么問題? 我很感激任何幫助。

您正在設置局部變量val 您實際上應該使用obj來持久化更改。 嘗試像這樣使用Object.keys(obj)進行迭代

Object.keys(obj).forEach(function(key) {
    myReg.forEach(function(regTest) {
      let val = obj[key].toString();
      obj[key] = val.replace(regTest.reg, regTest.group + '[redacted ' + regTest.name + ']');
    });
  });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM