Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 17.03.2018, 20:56
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

При этом если в массиве, который считает неправильно запросить просто определенные значения, он их выдает правильно.

console.log(pr4arr[5][5]);
  console.log(pr4arr[3][7]);


Т.е. просто функция почему то отрабатывает некорректно.
Ответить с цитированием
  #12 (permalink)  
Старый 17.03.2018, 21:02
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

w и h специально переставили?
Ответить с цитированием
  #13 (permalink)  
Старый 17.03.2018, 21:14
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

Сообщение от j0hnik Посмотреть сообщение
w и h специально переставили?
Да, я когда начал просматривать результаты, понял что он высоту и ширину местами меняет. Почему не понял. Если смотреть код, вроде все как надо, но выдавал наоборот.
Ответить с цитированием
  #14 (permalink)  
Старый 17.03.2018, 21:22
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

Попробовал так

var func =(arr,w,h) => arr[arr.findIndex(el=>el[0]>h)-1][arr[0].findIndex(el=>el>w)-1];
  console.log(func(price1Arr,2000,3000));


Первый массив считает правильно, второй нет...
Ответить с цитированием
  #15 (permalink)  
Старый 17.03.2018, 21:24
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

А так считает правильно все массивы, но ширина с высотой перепутаны получаются...
var func =(arr,w,h) => arr[arr.findIndex(el=>el[0]>w)-1][arr[0].findIndex(el=>el>h)-1];
  console.log(func(price1Arr,2000,3000));
Ответить с цитированием
  #16 (permalink)  
Старый 17.03.2018, 21:35
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

можно конечно в последнем случае убрать из функции w и h, сделать вместо них a и b, и просто передавать наоборот значения))
Ответить с цитированием
  #17 (permalink)  
Старый 17.03.2018, 21:41
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

Так пока оставил. Считает все массивы правильно.
var func =(arr,a,b) => arr[arr.findIndex(el=>el[0]>a)-1][arr[0].findIndex(el=>el>b)-1];
  console.log(func(pr4arr,2000,3000)); // 2000 - высота, 3000 - ширина
  console.log(func(pr4arr,3000,2200)); // 3000 - высота, 2200 - ширина
  console.log(func(pr4arr,1700,4000)); // 1700 - высота, 4000 - ширина
Ответить с цитированием
  #18 (permalink)  
Старый 17.03.2018, 22:40
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

var func =(arr,w,h) => arr[arr.findIndex(el=>el[0]>w)-1][arr[0].findIndex(el=>el>h)-1];

var func =(arr,a,b) => arr[arr.findIndex(el=>el[0]>a)-1][arr[0].findIndex(el=>el>b)-1];


неужели результат поменялся?
Ответить с цитированием
  #19 (permalink)  
Старый 17.03.2018, 22:54
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

а в excel откуда импортировали?
Ответить с цитированием
  #20 (permalink)  
Старый 17.03.2018, 23:08
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

Сообщение от j0hnik Посмотреть сообщение
var func =(arr,w,h) => arr[arr.findIndex(el=>el[0]>w)-1][arr[0].findIndex(el=>el>h)-1];

var func =(arr,a,b) => arr[arr.findIndex(el=>el[0]>a)-1][arr[0].findIndex(el=>el>b)-1];


неужели результат поменялся?
Не, результат не поменялся. Просто w - ширина, h - высота.
А когда задаются значения - то получается чтобы получить правильный ответ, нужно сделать w - высота, h - ширина. И чтобы не путаться, просто переименовал переменные.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передать параметры (количество ячеек, минимальное число и максимальное число)? Почему SilentBelka Элементы интерфейса 4 19.10.2017 16:09
Обход многомерного массива с задержкой после каждого цикла Walk Общие вопросы Javascript 2 14.08.2017 16:17
Не могу выбрать из массива минимальное число Help DynkanMaclaud Events/DOM/Window 1 08.05.2015 20:30
Как найти наибольшее число и ввести его на экран? Ivan152 Оффтопик 2 20.05.2012 20:13