Как реализовать формулу с вводом множества данных не дублируя переменные?
столкнулся с проблемой, написал формулу (простую): 
Как реализовать на JS такую формулу (допустим на 3-4 J):

J (если что в файле-техничке в глобал вынесены у меня, тут записал как 6.9 и t3 - то же самое), добавляю их в формулу просто такими же значениями (предварительно подключив, понятно).
let resultVmin;
function breakWayMin() {
const form = document.querySelector('#formInputMin');
const Sj = +form[0].value;
const L = +form[1].value;
resultVmin = 1.8 * 0.25 * 6.9 + (Math.sqrt(25.92 * ((Sj - L)) * 6.9));
console.log(+resultVmin.toFixed(2));
const result = document.querySelector('#resultVmin');
result.innerText = `Результат: ${Number(resultVmin.toFixed(2))}`;
return +resultVmin.toFixed(2);
}
<h1>Мин скорость</h1>
<form id="formInputMin">
<div>
<label>Sюз</label>
<input type="number">
</div>
<div>
<label>L</label>
<input type="number">
</div>
</form>
<button onclick="breakWayMin()">Результат Vmin</button>
<h2 id="resultVmin"></h2>
и ещё вопрос - если у меня куча J - как их продублировать что-ли, чтобы не копировать в техническом JS файле, ибо их там очень много( Чтобы (может) создать J2 а значения оно подтягивало из J (ну это второстепенный вопрос). Буду благодарен за помощь
Ответы (1 шт):
Автор решения: SwaD
→ Ссылка
Вот пример реализации множественного ввода значений без необходимости создания кучи переменных
const form = document.getElementById('formInputMin');
const resField = document.querySelector('#resultVmin')
const variables = [];
const values = {
s: 0,
l: 0
}
function inputVariable(type, idx) {
const inp = document.createElement('input');
inp.type = 'number';
inp.value = values[type];
inp.addEventListener('input', function() {
variables[idx][type] = this.value
})
return inp;
}
function craeteDiv(label, len) {
const div = document.createElement('div');
div.innerHTML = `<label>${label}(${len+1})</label>`
div.append(inputVariable(label, len))
return div;
}
function addInput() {
form.append(craeteDiv('s', variables.length));
form.append(craeteDiv('l', variables.length));
variables.push({ ...values });
}
addInput();
function breakWayMin() {
const sjL = variables.reduce((acc, item) => acc + item.s * item.l, 0);
const result = 1.8 * 0.25 * 6.9 + (Math.sqrt(25.92 * (sjL) * 6.9));
resField.innerHTML = `Результат: ${result.toFixed(2)}`;
}
<h1>Мин скорость</h1>
<form id="formInputMin">
</form>
<br />
<button onclick="addInput()">Еще переменная</button>
<br />
<button onclick="breakWayMin()">Результат Vmin</button>
<hr />
<h2 id="resultVmin"></h2>