javascript:数组中最接近的数字,位于较大的一侧
是否有更好的方法从阵列中获取最接近的较大数字,或者如果scrWidth大于最大值,则取最大值? 例如,500返回640,5000返回1920。javascript:数组中最接近的数字,位于较大的一侧,javascript,arrays,Javascript,Arrays,是否有更好的方法从阵列中获取最接近的较大数字,或者如果scrWidth大于最大值,则取最大值? 例如,500返回640,5000返回1920。 (并且仅使用旧的javascript)您可以使用过滤器方法非常简洁地完成此操作: var scrWidth = $window.width(); var scrSizes = [320, 480, 640, 768, 1024, 1366, 1600, 1920]; var theSize = 0; if (scrWidth >=
(并且仅使用旧的javascript)您可以使用
过滤器
方法非常简洁地完成此操作:
var scrWidth = $window.width();
var scrSizes = [320, 480, 640, 768, 1024, 1366, 1600, 1920];
var theSize = 0;
if (scrWidth >= 1920) {
theSize = 1920;
} else {
theSize = scrSizes.find(function(element){return element > scrWidth});
}
或香草JavaScript:
函数getNextHighestNumber(arr,number){
var max=0;
对于(变量i=0;i编号){
返回arr[i];
}
如果(arr[i]>最大值){
max=arr[i];
}
}
返回最大值;
}
log(getNextHighestNumber([2,5,12,34,56,17]);
log(getNextHighestNumber([2,5,12,34,56,57])代码>使用map和min方法尝试下面的小代码,并观察结果:
function getNextHighestNumber(arr, number) {
return _.filter(arr, function(val) {
return val > number
})[0];
}
getNextHighestNumber([2, 5, 12, 34, 56], 17);
谢谢,:)下面的函数给出的最接近的数字将大于参数中提供的数字,如果数组中的its,则else将返回参数中提供的数字,因为它大于数组中的所有数字
var scrWidth = $window.width();
var scrSizes = [320, 480, 640, 768, 1024, 1366, 1600, 1920];
var theSize = 0;
if (scrWidth >= 1920) {
theSize = 1920;
} else {
var test = scrSizes.map(a=> Math.abs(scrWidth - a));
theSize = scrSizes.find( a => a == scrWidth - Math.min(...test));
theSize = theSize ? theSize : scrSizes.find( a => a == scrWidth + Math.min(...test));
}
函数getNextHighestNumber(arr,number){
对于(变量i=0;i编号){
返回arr[i];
}
}
返回号码
}
| | 1920
可以添加到的末尾。查找会导致未定义的:
var-scrSizes=[320480640768102136611601920];
var-scrWidth=12345;
查找(函数(元素){return element>scrWidth;})| | 1920;
console.log(scrWidth,theSize);
var-scrWidth=320;
查找(函数(元素){return element>scrWidth;})| | 1920;
console.log(scrWidth,theSize)
假定scrSizes
数组已排序,您可以对数组进行二进制搜索,但对于如此小的数组,这并不重要。线性搜索完全可以。在我看来,你所做的是更好的方法,因为我找不到更好的方法来解决这种情况。好吧,它使用17,但使用57给出undefined,在这里它应该返回56@kerkааа,现在检查一下。
function getNextHighestNumber(arr, number) {
for (var i = 0; i < arr.length; i ++) {
if (arr[i] > number) {
return arr[i];
}
}
return number
}