Первый параметр функции, который вы можете передать replace - это match
.
Вы можете обновить свой код, чтобы использовать чередование, чтобы оно соответствовало либо «левому», либо «правому» и переворачивало значения.
(?:left|right)
let replaced = str.replace(/(?:left|right)/g, o => {
return o === "left" ? "right" : "left";
});
Обратите внимание, что используя это регулярное выражение, вы также сопоставляете "left" в "alefta". Если вы хотите соответствовать только левому или правому краю, вы можете использовать границу слова \b
:
\b(?:left|right)\b
let str = JSON.stringify({
val: 4,
right: {
val: 7,
right: {
val: 9,
right: null,
left: null
},
left: {
val: 6,
right: null,
left: null
},
},
left: {
val: 2,
right: {
val: 3,
right: null,
left: null
},
left: {
val: 1,
right: null,
left: null
},
},
}, null, 2);
let replaced = str.replace(/(?:left|right)/g, o => {
return o === "left" ? "right" : "left";
});
console.log(replaced);