У меня есть массив Object следующим образом:
arr = [ {distance:4, avg_rating: 5},
{distance: 6, avg_rating: 4},
{distance: 7, avg_rating: 2, liked: true},
{distance: 6, avg_rating: 4 , liked: true},
{distance: 6, avg_rating: 3 , liked: true},
{distance: 4, avg_rating: 3}]
Я хочу получить сначала {likes: true}, а затем он будет отсортирован по расстоянию в порядке возрастания, и если расстояние будет таким же, то будетбыть отсортированы в соответствии с avg_rating.
Я использовал метод сортировки JavaScript, который не работает.
arr.sort(function(a, b){
if (b.liked) return 1;
if(!b.liked) return -1;
if (a.distance < b.distance) return 1;
if (a.distance > b.distance) return -1;
if (a.avg_rating < b.avg_rating) return -1;
if (a.avg_rating > b.avg_rating) return 1;
})
Я ожидаю, что результат будет
arr = [{distance: 6, avg_rating: 4 , liked: true},
{distance: 6, avg_rating: 3 , liked: true}
{distance: 7, avg_rating: 2, liked: true},
{distance: 4, avg_rating: 5},
{distance: 4, avg_rating: 3},
{distance: 6, avg_rating: 4}]
Так что, сначала все {понравилось: true} сверху и отсортированы по расстоянию в порядке возрастания (то есть все рядом находятсяначало массива), а затем, если расстояние одинаковое, сортируйте по avg_rating в порядке убывания (т.е. все те же значения расстояния снова сортируются по avg_rating)