
17.03.2018, 20:56
|
Профессор
|
|
Регистрация: 25.09.2017
Сообщений: 186
|
|
При этом если в массиве, который считает неправильно запросить просто определенные значения, он их выдает правильно.
console.log(pr4arr[5][5]);
console.log(pr4arr[3][7]);
Т.е. просто функция почему то отрабатывает некорректно.
|
|

17.03.2018, 21:02
|
 |
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
w и h специально переставили?
|
|

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

17.03.2018, 21:22
|
Профессор
|
|
Регистрация: 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));
Первый массив считает правильно, второй нет...
|
|

17.03.2018, 21:24
|
Профессор
|
|
Регистрация: 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));
|
|

17.03.2018, 21:35
|
Профессор
|
|
Регистрация: 25.09.2017
Сообщений: 186
|
|
можно конечно в последнем случае убрать из функции w и h, сделать вместо них a и b, и просто передавать наоборот значения))
|
|

17.03.2018, 21:41
|
Профессор
|
|
Регистрация: 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 - ширина
|
|

17.03.2018, 22:40
|
 |
Профессор
|
|
Регистрация: 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];
неужели результат поменялся?
|
|

17.03.2018, 22:54
|
 |
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
а в excel откуда импортировали?
|
|

17.03.2018, 23:08
|
Профессор
|
|
Регистрация: 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 - ширина. И чтобы не путаться, просто переименовал переменные.
|
|
|
|