如何按angularjs中最接近的数字排序?

时间:2014-05-05 08:29:45

标签: angularjs

我有一个带数字的json,我想使用angularjs按最接近给定数字的位置对这些数字进行排序。例如:我的数组包括数字1,2,3,4,5。我想按顺序排列它们。我想将它们显示为4,3,5,2,1(因为3和5最接近4,然后是2和1。

有人有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您需要使用Array.sort方法。这是一个可以满足您需求的算法:

var closestTo = 4;
array.sort(function(a, b) {
    if (a == closestTo) {
        // a is 4, so must be in first position
        return -1;
    } else if (b == closestTo) {
        // b is 4, so must be in first position
        return 1;
    }
    var deltaA = Math.abs(closestTo - a);
    var deltaB = Math.abs(closestTo - b);
    if (deltaA == deltaB) {
        // a and b are at same distance from 4, so use numerical order
        return a - b;
    } else if (deltaA < deltaB) {
        // if a is at a smaller distance, it should be before b
        return -1;
    } else {
        // b is at a smaller distance, it should be before a
        return 1;
    }
});

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

的更多详情