他们是在数组中找到最接近 0 的数字的方法吗?

Is their a way to find the closest number to 0 in an Array?

我有一个这样的数组

var tideArray = new Array(); 
tideArray.push({tide:"haute1", difference: "-14"});  
tideArray.push({tide:"haute2", difference: "-3"});  
tideArray.push({tide:"basse1", difference: "-9"});  
tideArray.push({tide:"basse2", difference: "4"}); 

tideArray.sortOn("difference", Array.NUMERIC); 
trace(tideArray[0].tide);

现在,它正在选择最小数字 (-14),但我想选择最接近 0 的数字。

有办法吗?

编辑

我试过了:

trace(closestToZero(tideArray)); 


function closestToZero(a:Array):int  
{  
    var curDelta:int = Math.abs(0 - a[0].difference);  
    var curIndex:int = 0;  

    for(var i:int = 1; i < a.length; i++){  
        var thisDelta:int = Math.abs(0 - a[i].difference);  
        if(thisDelta < curDelta){  
            curIndex = i;  
        }  
    }  

    return curIndex;  
}  

但是好像哪里出错了,因为跟踪结果是3(所以这意味着它告诉我“basse2”(4)是最接近的到 0...但是,如您所见,它是“haute2”(-3)最接近的)。

像这样

var tideArray = new Array(); 
...
function sortMyArray(a,b):int {
    if (Math.abs(a) < Math.abs(b)) {
        return -1;
    }
    if (Math.abs(a) > Math.abs(b)) {
        return 1;
    }
    return 0;
}
tideArray.sort(sortMyArray);

编辑:

对于你的数组。

function sortMyArray(a,b):int {

    if (Math.abs(a.difference) < Math.abs(b.difference)) {
        return -1;
    }
    if (Math.abs(a.difference) > Math.abs(b.difference)) {
        return 1;
    }
    return 0;
}

我认为简单地遍历数组以找到具有(绝对)最小值 difference 的项目会更有效:

if (tideArray.length > 0)
{
    var minItem: Object = tideArray[0];
    for (var index:int = 1; index < tideArray.length; index++)
    {
        if (Math.abs(tideArray[index].difference) < Math.abs(minItem.difference))
        {
            minItem = tideArray[index];
        }
    }
    trace(minItem.tide);
}