【问题标题】:Order an array of objects by whether property exists [duplicate]按属性是否存在对对象数组进行排序[重复]
【发布时间】:2021-11-01 22:18:12
【问题描述】:

我有一组教师,每个教师都有一个属性userimage 属性,可以包含stringnull 值。 考虑到user.image 属性,我如何订购数组?

这是一个结构示例。

const teachers = [
    {
        id: 1,
        user: {
            id: 10,
            image: "image.jgp"
        }
    },
    {
        id: 3,
        user: {
            id: 30,
            image: null
        }
    },
    {
        id: 2,
        user: {
            id: 20,
            image: "image.jgp"
        }
    },
    {
        id: 4,
        user: {
            id: 40,
            image: null
        }
    },
]

【问题讨论】:

  • 他们的订单应该是什么?只有两个值
  • 这能回答你的问题吗? Sorting an array of objects by property values
  • 顺序应该是,首先所有user.image为字符串的对象,所有user.image为空的对象,在最后。数组只是一个例子,结构只是解释问题的基础。
  • 这是一个编写排序函数的问题,它比较数组中的两个元素。在您的情况下,它类似于(a, b) => a.user.image.localeCompare(b.user.image)。我写过关于比较对象的文章:freecodecamp.org/news/supercharged-sorts-in-javascript
  • 它没有,因为我只是介意是否是一个值,而不是 unicode o 值

标签: javascript arrays algorithm sorting


【解决方案1】:

您可以使用Array.sort 并检查image 属性是否为null

const teachers=[{id:1,user:{id:10,image:"image.jgp"}},{id:3,user:{id:30,image:null}},{id:2,user:{id:20,image:"image.jgp"}},{id:4,user:{id:40,image:null}}];

const sorted = teachers.sort((a, b) => b.user.image === null ? -1 : 1)

console.log(sorted)

【讨论】:

    猜你喜欢
    • 2016-11-25
    • 1970-01-01
    • 2014-09-17
    • 2012-10-06
    • 2014-08-25
    • 1970-01-01
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多