#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. Спасибо! Это решает мою проблему.