@zekin375

Как отсортировать массив по значению?

Нужно отсортировать элементы по значению sort, пытался штатной функцией sort, выбивает ошибку

var data = {
    "ID": "414",
    "ELEMENT": {
        "5333": {
                "ID": "5333",
                "sort": 300,
            },
        "5334": {
                "ID": "5334",
                "sort": 500,
        },
        "5335": {
                "ID": "5335",
                "sort": 100,
        }
    }
}
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
Нужно преобразовать твой объект в массив, тогда можно сортировать штатной функцией.
spoiler
var data = {
    "ID": "414",
    "ELEMENT": {
        "5333": {
            "ID": "5333",
            "sort": 300,
        },
        "5334": {
            "ID": "5334",
            "sort": 500,
        },
        "5335": {
            "ID": "5335",
            "sort": 100,
        }
    }
}

// Преобразование объекта в массив
var elementsArray = Object.keys(data.ELEMENT).map(function(key) {
    return data.ELEMENT[key];
});

// Сортировка массива по sort
elementsArray.sort(function(a, b) {
    return b.sort - a.sort;
});

// Выводим массив в консоль
console.log(elementsArray);

А сортировка объекта просто не имеет смысла, т.к. порядок ключей (например, при переборе) там не гарантирован.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Сортировать можно только массив, а у вас объект.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы