Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Найти максимально близкое минимальное число из многомерного массива (https://javascript.ru/forum/misc/73041-najjti-maksimalno-blizkoe-minimalnoe-chislo-iz-mnogomernogo-massiva.html)

the_little 17.03.2018 20:56

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

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


Т.е. просто функция почему то отрабатывает некорректно.

j0hnik 17.03.2018 21:02

w и h специально переставили?

the_little 17.03.2018 21:14

Цитата:

Сообщение от j0hnik (Сообщение 480823)
w и h специально переставили?

Да, я когда начал просматривать результаты, понял что он высоту и ширину местами меняет. Почему не понял. Если смотреть код, вроде все как надо, но выдавал наоборот.

the_little 17.03.2018 21:22

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

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));


Первый массив считает правильно, второй нет...

the_little 17.03.2018 21:24

А так считает правильно все массивы, но ширина с высотой перепутаны получаются...
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));

the_little 17.03.2018 21:35

можно конечно в последнем случае убрать из функции w и h, сделать вместо них a и b, и просто передавать наоборот значения))

the_little 17.03.2018 21:41

Так пока оставил. Считает все массивы правильно.
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 - ширина

j0hnik 17.03.2018 22:40

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];


неужели результат поменялся?

j0hnik 17.03.2018 22:54

а в excel откуда импортировали?

the_little 17.03.2018 23:08

Цитата:

Сообщение от j0hnik (Сообщение 480832)
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 - ширина. И чтобы не путаться, просто переименовал переменные.


Часовой пояс GMT +3, время: 15:35.