Пройдите по объекту и замените значения на основе регулярного выражения в данном массиве

#javascript

#язык JavaScript

Вопрос:

У меня есть объект и массив. Я пытаюсь перебрать ключи объектов, сверить их с регулярным выражением в массиве, а затем заменить строку. Что у меня есть до сих пор:

 let event = {  "firstKey":"1",  "secondKey": {  "a":"one",  "b":"two",  "c":"three"  },  "id":111934444,  "count":1,  "location":"https://www-domain-org/username=stevenamp;tel=1234",  "title":"lastname=hey",  "sd":"24-bit" };   let myReg = [  {  name: 'telephone',  reg: /((tel=)|(telephone=))[d s][^amp;/?] /gi,  group: '$1'  },  {  name: 'names',  reg: /((username=)|(lastname=))[^amp;/?] /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);  

Я не получаю исходный объект с замененными значениями. Что не так с моим кодом? Я ценю любую помощь.

Ответ №1:

Вы устанавливаете локальную переменную 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   ']');  });  });  

Комментарии:

1. Спасибо! Это решает мою проблему.