在javascript中查找数组中的数字
我使用以下代码查找数组中最接近的值在javascript中查找数组中的数字,javascript,Javascript,我使用以下代码查找数组中最接近的值 var x=[0,1,2,3,4,5]; var pointX=1.5; $.each(x, function() { if (closest == null || Math.abs(this - pointX) < Math.abs(closest - pointX)) { closest = this; } }); 对于本例,它返回20,但我不希望返回,因为1.5不在范围(20-25)内。在这种情况下,它应该返回n
var x=[0,1,2,3,4,5];
var pointX=1.5;
$.each(x, function() {
if (closest == null || Math.abs(this - pointX) < Math.abs(closest - pointX)) {
closest = this;
}
});
对于本例,它返回20,但我不希望返回,因为1.5不在范围(20-25)内。在这种情况下,它应该返回null。我该怎么做呢?试试看
function closest(x, pointX){
var closest = null;
if(pointX < x[0] || pointX > x[x.length -1]){
return null
}
$.each(x, function(i,v) {
if (closest == null || Math.abs(v - pointX) <= Math.abs(closest - pointX)) {
closest = v;
}
});
return closest;
}
函数最近(x,pointX){
var=null;
if(点xx[x.length-1]){
返回空
}
$。每个(x,函数(i,v){
if(最接近==null | | Math.abs(v-pointX)数组[array.length-1]){
返回空
}
$。每个(数组、函数(i、v){
如果(最接近==null | | Math.abs(v-pointX)尝试
函数最近(x,pointX){
var=null;
if(点xx[x.length-1]){
返回空
}
$。每个(x,函数(i,v){
if(最接近==null | | Math.abs(v-pointX)数组[array.length-1]){
返回空
}
$。每个(数组、函数(i、v){
如果(最接近==null | | Math.abs(v-pointX)如果输入数组总是被排序,那么Arun的答案是正确的。否则这对您来说应该是可行的:
function getClosest(x, pointX) {
var closest = null;
// Work out min and max
var min = Math.min.apply(null, x);
var max = Math.max.apply(null, x);
// Only calculate closest if point is within array
if (pointX >= min && pointX <= max) {
var i;
// removed the each as it wasn't really necessary
for (i = 0; i < x.length; i++) {
if (closest == null || Math.abs(x[i] - pointX) < Math.abs(closest - pointX)) {
closest = x[i];
}
}
}
return closest;
}
函数getClosest(x,pointX){
var=null;
//算出最小值和最大值
var min=Math.min.apply(null,x);
var max=Math.max.apply(null,x);
//仅当点位于阵列内时计算最近点
如果(pointX>=min&&pointX如果输入数组总是被排序,那么Arun的答案是正确的。否则,这对您应该有用:
function getClosest(x, pointX) {
var closest = null;
// Work out min and max
var min = Math.min.apply(null, x);
var max = Math.max.apply(null, x);
// Only calculate closest if point is within array
if (pointX >= min && pointX <= max) {
var i;
// removed the each as it wasn't really necessary
for (i = 0; i < x.length; i++) {
if (closest == null || Math.abs(x[i] - pointX) < Math.abs(closest - pointX)) {
closest = x[i];
}
}
}
return closest;
}
函数getClosest(x,pointX){
var=null;
//算出最小值和最大值
var min=Math.min.apply(null,x);
var max=Math.max.apply(null,x);
//仅当点位于阵列内时计算最近点
如果(pointX>=min&&pointX“它将返回20。但它是错误的。它将返回null。”-你的意思是希望它返回20?还是希望它返回null?我被问题的最后一部分弄糊涂了。你是说它应该返回20,但不返回,而是返回null
?还是应该返回null(因为它不在最小值和最大值范围内)而是返回20?不。它将返回20。但我不想这样。我不需要返回任何内容(即null)。这与JQuery完全无关。我正在删除标记。数组中的值是否总是像您的两个示例一样有序?“它将返回20。但它是错误的。它将返回null。”-你是说你希望它返回20?还是希望它返回null?我被问题的最后一部分弄糊涂了。你是说它应该返回20,但不返回,而是返回null
?还是应该返回null(因为它不在最小值和最大值内)但是是否返回20?不。它将返回20。但是我不想要这个。我不需要任何东西将被返回(即null)这与JQuery完全无关。我正在删除标记。数组中的值是否总是像您的两个示例那样按顺序排列?答案很好,但只有当输入数组从最低到最高排序时,您才认为数组是有序的sorted@SteveClaridge这是一个很好的答案,但前提是输入数组从低到高排序假设数组是sorted@SteveClaridge这是一个假设
function getClosest(x, pointX) {
var closest = null;
// Work out min and max
var min = Math.min.apply(null, x);
var max = Math.max.apply(null, x);
// Only calculate closest if point is within array
if (pointX >= min && pointX <= max) {
var i;
// removed the each as it wasn't really necessary
for (i = 0; i < x.length; i++) {
if (closest == null || Math.abs(x[i] - pointX) < Math.abs(closest - pointX)) {
closest = x[i];
}
}
}
return closest;
}