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