如何按对象值对对象数组排序?

时间:2020-03-02 19:04:49

标签: javascript jquery

我在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 个答案:

答案 0 :(得分:4)

要下降,你要走相反的方向

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

答案 1 :(得分:0)

您步入正轨!排序方法是您要使用的方法,遇到的问题是返回值。

基本上,您应该返回的是:

  • 如果A排在B之前,则数字应小于0(负数)
  • 如果B排在A之前,则大于0(正)的数字
  • 如果A和B相等或不兼容,则为0

您可以阅读更多here

如果您尝试对这种降序进行排序,则需要与return语句中当前的内容相反:

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