Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 29.09.2022, 22:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от IZUM
массив mt = [3, 22, 23, 24]; должен, создаваться в коде
это был просто пример, что массивов может быть много, если вам нужно всего 2, то и пишите 2. строка 39 пост #5. код от этого не изменится.
Ответить с цитированием
  #12 (permalink)  
Старый 30.09.2022, 21:50
Аспирант
Отправить личное сообщение для IZUM Посмотреть профиль Найти все сообщения от IZUM
 
Регистрация: 21.08.2022
Сообщений: 57

При всех значениях tp нужные поддиапазоны выводятся правильно, кроме участков, где отсутствует левый или правый поддиапазон. То есть, вначале, на участке 0, 1, 2, 3 и в конце, на участке 45, 47, 48. При попадении tp на эти участки появляется undefined или null, что выводит Uncaught TypeError. Как можно скорректировать представленный код JS, чтобы не выходила ошибка и расчёт продолжался.
const func = (ms, mo, tr) => {
   const mso = ms.concat(mo).sort((a,b)=>a-b)
   let paired = [], dl = null, dp = null, index = null;
   for(let i = 0; i < mso.length; i += 2){
      paired.push([mso[i], mso[i +1]])
   }
   const dd = paired.filter(item => ((ms.includes(item[0]) && ms.includes(item[1])) 
                              || (mo.includes(item[0]) && mo.includes(item[1])) ))

   for(let i = 0; i < dd.length; i++){
      if(tr > dd[i][1]){
         dl = dd[i]
      }
      if(dd[i][0] < tr){
         dp = dd[i + 1]
      }
   }   
   return [dl, dp]
}
console.log( func ( [2, 8, 13, 15, 19, 27, 33, 36, 43, 46], [0, 4, 6, 11, 17, 21, 25, 31, 38, 41, 45, 48], 17 ) );
console.log( func ( [2, 8, 13, 15, 19, 27, 33, 36, 43, 46], [0, 4, 6, 11, 17, 21, 25, 31, 38, 41, 45, 48], 23  ));
console.log( func ( [2, 8, 13, 15, 19, 27, 33, 36, 43, 46], [0, 4, 6, 11, 17, 21, 25, 31, 38, 41, 45, 48], 21  ));
console.log( func ( [2, 8, 13, 15, 19, 27, 33, 36, 43, 46], [0, 4, 6, 11, 17, 21, 25, 31, 38, 41, 45, 48], 37  ));
Ответить с цитированием
  #13 (permalink)  
Старый 30.09.2022, 22:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

IZUM,
не понимаю, помочь не могу, может кто-то ещё подскажет.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить индексы одинаковых рядом стоящих элементов в заданном массиве IZUM Общие вопросы Javascript 3 26.09.2022 23:03
Как определить индекс инпута в блоке в такой ситуации MC-XOBAHCK Общие вопросы Javascript 6 10.09.2018 13:49
определить элемент под перетаскиваемым элементом slavaspirit Элементы интерфейса 3 26.07.2015 01:49
Нужна помощь! Определить попадает ли выбранная точка в область КАД? mafin Общие вопросы Javascript 6 03.09.2013 12:19
Как определить количество элементов в многомерном массиве Dima00782 Общие вопросы Javascript 3 12.06.2010 14:15