/ / Jak sortować według najbliższych liczb w angularjs? - angularjs

Jak sortować według najbliższych liczb w angularjs? - angularjs

Mam JSON z liczbami i chcę sortowaćte liczby za pomocą angularjs według pozycji najbliższej podanej liczbie. Na przykład: moja tablica zawiera liczby 1,2,3,4,5. Chcę uporządkować je według 4. Chcę wyświetlić je jako 4,3,5,2,1 (ponieważ 3 i 5 są najbliższe 4, a następnie 2 i 1.

Czy ktoś ma jakiś pomysł?

Odpowiedzi:

1 dla odpowiedzi № 1

Musisz użyć Array.sort metoda. Oto algorytm, który może odpowiadać Twoim potrzebom:

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;
}
});

Więcej szczegółów na https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort