Как я могу отсортировать массив объектов по значению объекта? - PullRequest
0 голосов
/ 02 марта 2020

У меня есть этот массив объектов здесь JS:

const testObject = [
    {
        name: "Grinsendes Gesicht",
        icon: "?",
        used: 3,
    },
    {
        name: "Hundegesicht",
        icon: "?",
        used: 8
    },
];

Сейчас я ищу вариант сортировки массива объектов по убыванию по используемому счетчику в каждом объекте так, чтобы он выглядит как после сортировки:

const testObject = [
    {
        name: "Hundegesicht",
        icon: "?",
        used: 8
    },
    {
        name: "Grinsendes Gesicht",
        icon: "?",
        used: 3,
    }
];

Я пробовал это, но это не работает, как ожидалось:

const testObject = [
	{
		name: "Grinsendes Gesicht",
		icon: "?",
		used: 3,
	},
	{
		name: "Hundegesicht",
		icon: "?",
		used: 8
	},
];

console.log( testObject );

testObject.sort( function ( a, b ) {
	return a.used - b.used;
} );

console.log( testObject );

Ответы [ 2 ]

4 голосов
/ 02 марта 2020

Для спуска, вы go наоборот

const testObject = [
	{
		name: "Grinsendes Gesicht",
		icon: "?",
		used: 3,
	},
	{
		name: "Hundegesicht",
		icon: "?",
		used: 8
	},
];

console.log( testObject );

testObject.sort( function ( a, b ) {
	return b.used - a.used;
} );

console.log("Descending array:")
console.log( testObject );
0 голосов
/ 02 марта 2020

Вы на правильном пути! Метод сортировки - это то, что вы хотите использовать, проблема, с которой вы сталкиваетесь, это возвращаемое значение.

По сути, вы должны возвращать следующее:

  • число ниже 0 (отрицательное ) если A должен предшествовать B
  • число выше 0 (положительное значение), если B должно предшествовать A
  • 0, если A и B равны или несовместимы

Вы можете прочитать это подробнее здесь .

Если вы пытаетесь отсортировать по убыванию, вы хотите сделать обратное тому, что вы в настоящее время имеете в своем выражении возврата:

testObject.sort( function ( a, b ) { return b.used - a.used } );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...