#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. Большое вам спасибо!