Javascript 查找高于或低于x的最近数字
如果我有一个“动态”数组,例如:Javascript 查找高于或低于x的最近数字,javascript,jquery,arrays,Javascript,Jquery,Arrays,如果我有一个“动态”数组,例如: var xArray = [2,4,5,5,6,7,8,9,9,8,7,7,6,6,6] 我需要找到与最后一个条目最接近的数字(就索引而言),它不等于最后一个条目(就数字而言) 有点难以解释!对于上面的数组,最后一个条目是6。我正在寻找与6不同的最近的条目(可以是更高或更低的值)。在这种情况下,它将是 xArray[11] //7 因此,目前我有: var lastX = xArray[xArray.length -1], prevX = ????? 比如
var xArray = [2,4,5,5,6,7,8,9,9,8,7,7,6,6,6]
我需要找到与最后一个条目最接近的数字(就索引而言),它不等于最后一个条目(就数字而言)
有点难以解释!对于上面的数组,最后一个条目是6。我正在寻找与6不同的最近的条目(可以是更高或更低的值)。在这种情况下,它将是
xArray[11] //7
因此,目前我有:
var lastX = xArray[xArray.length -1],
prevX = ?????
比如:
function diff(arr) {
var a = arr.slice(), last = a.pop(), nxt = a.pop();
while (last == nxt && a.length) nxt = a.pop();
return nxt;
}
就像
var diff = diff(xArray);
比如:
function diff(arr) {
var a = arr.slice(), last = a.pop(), nxt = a.pop();
while (last == nxt && a.length) nxt = a.pop();
return nxt;
}
就像
var diff = diff(xArray);
试一试
演示:试试看
演示:试试这个
var xArray = [2,4,5,5,6,7,8,9,9,8,7,7,6,6,6];
var xChangeDetector = null;
for(var I=xArray.length-1; I>=0 ; I--)
{
if(xChangeDetector == null)
{
xChangeDetector = xArray[I];
}
else if(xChangeDetector != xArray[I])
{
xChangeDetector = xArray[I];
break;
}
}
alert(xChangeDetector);
试试这个
var xArray = [2,4,5,5,6,7,8,9,9,8,7,7,6,6,6];
var xChangeDetector = null;
for(var I=xArray.length-1; I>=0 ; I--)
{
if(xChangeDetector == null)
{
xChangeDetector = xArray[I];
}
else if(xChangeDetector != xArray[I])
{
xChangeDetector = xArray[I];
break;
}
}
alert(xChangeDetector);
功能性解决方案可以是:
var array = [2,4,5,5,6,7,8,9,9,8,7,7,6,6,6]
var lastIndex = array.reduce(function(acc,item,index,arr){
return item !== arr[acc] ? index : acc
}, 0) -1;
console.log(lastIndex);
它的效率不如其他解决方案,因为它需要遍历整个阵列。功能解决方案可以是:
var array = [2,4,5,5,6,7,8,9,9,8,7,7,6,6,6]
var lastIndex = array.reduce(function(acc,item,index,arr){
return item !== arr[acc] ? index : acc
}, 0) -1;
console.log(lastIndex);
它的效率不如其他的,因为它需要遍历整个数组。可能重复的可能重复的可能非常智能,只需为OP添加一个信息,他可能希望首先复制数组。谢谢这对我来说是最简单的!当xArray是一个event.originalEvent.touchs[0]数组时,用于检测最后一个拖动方向。PageX相当智能,只需为OP添加一个信息,他可能希望首先复制数组。谢谢这对我来说是最简单的!当xArray是event.originalEvent.touchs[0].pageX的数组时,用于检测最后一个拖动方向