evgenijpopov
@evgenijpopov
учусь фронтэнду понемногу

Как выделить индекс первого элемента массива, соответствующего условию?

Привет
Вот, пишу калькулятор на свой сайт - он должен подсказать посетителю, какого сечения нужно выбрать провод, чтобы электроснабжать его мощность. Сечения, токи по меди и люминю я записал в 3 массивах. Умел бы работать с многомерными - записал бы иначе. В общем, мне нужно, чтобы программа по нажатию кнопки рассчитала ток из мощности, перебрала токи по меди, подцепила номер в массиве токов по меди, по этому номеру вывела сечение из массива сечений. Аналогично с люминем. Сообщите, пожалуйста, как организовать описанный перебор и подцеп.
Вот скрипт из поля js моей песочницы на codepen.io.
Текущий код сохраняет в переменной pointer не первый индекс из массива токов, удовлетворяющий условию, а последний. А нужно, чтобы первый - именно тогда выводится будет минимальное сечение провода, способного длительно выдерживать расчетный ток.

const v = document.getElementById('voltage').value;
let cables = [2.5, 4, 6, 10, 16, 25, 35]; //сечения
let currentsal = [16, 21, 26, 38, 55, 65, 75]; //токи по люминю
let currentscu = [21, 27, 34, 50, 70, 85, 100];//токи по меди
var pointer=25; объявление переменной указателя и присвоение тестового значения

function GetResult()
{
const v = document.getElementById('voltage').value;
var p = parseFloat(document.calcform.p.value.replace(',', '.'));
var p = document.calcform.p.value; //Ввод активной мощности
var p = parseFloat(document.calcform.p.value.replace(',', '.'));
var isred;//Объявление и расчет среднего тока из полной мощности

if (document.getElementById("id4").checked){phases=3} else {phases=1}; //проверка переключателя фаз

if (phases==3){isred=p/v*1000/1.732}; //расчет тока для 3 фаз
if (phases==1){isred=p/v*1000;}; //для 1й

document.calcform.isred.value = isred.toFixed(2); //вывод рассчитанного из мощности и кол-ва фаз тока

for (let i = 0; i < currentscu.length; i++) {
if (isred }

otvetcu=cables[pointer]; //присвоение значения промежуточной переменной для вывода

document.getElementById("otvetcu").textContent = otvetcu; //вывод сечения по меди
for (let i = 0; i < currentsal.length; i++) {
if (isred }
otvetal=cables[pointer];
document.getElementById("otvetal").textContent = otvetal; //вывод сечения по люминю
document.getElementById("btnadd").value = "Еще раз?"; //кнопка меняет надпись

}
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы