Javascript перемещает символы в строке?

#javascript #string #character

Вопрос:

У меня есть формула, и мне нужно перемещать символы в тысячах формул. Количество нужно переместить в начало уравнения, я близок к этому, но не могу понять, как это сделать. Пример формулы:

 const formula = '(({oval}) amp;amp; ({2inchby3inch}) amp;amp; {qty} >= 91000  amp;amp; {qty} <=91999  amp;amp; {whitebopp})';
var index1 = (formula.indexOf("{qty}")) - 5;
var index2 = (formula.indexOf("amp;amp; {whitebopp}")) - 15;
console.log(formula.slice(1) formula.slice(index1, index2));
 

Этот код выводится, "({oval}) amp;amp; ({2inchby3inch}) amp;amp; {qty} >= 91000 amp;amp; {qty} <=91999 amp;amp; {whitebopp})) amp;amp; {qty} >= 91000 amp;amp; " когда я хочу, чтобы он был напечатан "(({qty} >= 91000 amp;amp; {qty} <=91999) amp;amp; ({oval}) amp;amp; ({2inchby3inch}) amp;amp; {whitebopp}) "
Что я делаю не так? Прямо сейчас нужный текст вставляется в конце, я хочу, чтобы он вставлялся на один символ после начала.

Ответ №1:

Вы можете использовать split() и reduce() для изменения порядка массива

 let formula = '(({oval}) amp;amp; ({2inchby3inch}) amp;amp; {qty} >= 91000  amp;amp; {qty} <=91999  amp;amp; {whitebopp})';
formula = formula.slice(1, -1)
let nformula = "("   formula.split(" amp;amp; ").reduce((b, a) => a.includes('{qty}') ? [a, ...b] : [...b, a], []).join(" amp;amp; ")   ")"
console.log(nformula) 

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

1. Большое вам спасибо!