将自定义排序应用于打字稿中的对象数组

DocBenchpress

我有一个对象数组,我想在Angular Project中对其应用自定义排序。

我要实现的一个简单示例是,每个对象都具有属性idcategory

let cars: { id: number, category: string }[] = [
    { "id": 3, "category": "fast car" },
    { "id": 0, "category": "fast car" },
    { "id": 1, "category": "slow car" },
    { "id": 2, "category": "fast car" }
];

不,我想对数组进行排序。首先,应该显示每辆快速车(如果按ID有多种排序),然后是慢车(如果也有按ID多种排序)。

{ "id": 0, "category": "fast car" }
{ "id": 2, "category": "fast car" }
{ "id": 3, "category": "fast car" }
{ "id": 1, "category": "slow car" }

我真的不知道.sort函数如何工作。由于我是编程新手,因此在这种情况下对如何使用.sort()进行详细的描述将很有帮助。

卢卡斯

说明:自从您要求描述以来,我正在尽最大努力首先解释它:sort您应用于数组函数通常希望直接比较两个参数并返回一个数字。该数字可以视为“小于”(负),“大于”(正)或“等于”(零)。因此,在您的情况下,该函数将被多次调用。从理论上讲,也可能没有这两个参数,例如对于随机顺序,您可以编写:cars.sort(() => Math.random() - 0.5)

因此,可以使用任何返回数字的函数来对数组进行排序。您的情况是:

如果是同一类别,则按定义的类别层次/使用ID进行排序:

const cars: { id: number; category: string }[] = [
  { id: 3, category: "fast car" },
  { id: 0, category: "fast car" },
  { id: 1, category: "slow car" },
  { id: 2, category: "fast car" }
];

const orderCategory = { 'fast car': 1, 'slow car': 2 };

cars.sort((carA, carB) => {
  if (carA.category !== carB.category) {
    return orderCategory[carA.category] - orderCategory[carB.category];
  } else {
    return carA.id - carB.id;
  }
});

console.log(cars);

其他两个建议:

  • 您可以使用const,而不是let你的情况
  • 您不必为id使用引号category

希望我的解释能对您有所帮助!快乐编码


编辑:格式化代码。


编辑2:我只是看到您首先希望列出快车。在我之前的实现中,这是由于字母顺序(F <S)而起作用的。但是,如果不是字母顺序不是您要首先列出它们的原因,则必须定义类别。现在,您可以将“快速车”重命名为“运动车”(到处都是),并且首先会列出各个汽车,而根据字母排序,它们将位于每个“慢速车”的下方。

我刚刚更新了上面的代码。这是基于字母顺序的旧实现:

按类别的字母顺序排序/如果是相同类别,则使用ID:

cars.sort((carA, carB) => {
  if (carA.category < carB.category) {
    return -1;
  } else if (carA.category > carB.category) {
    return 1;
  }
  // same as: else if (carA.category === carB.category)
  else {
    return carA.id - carB.id;
  }
});

编辑3:在我的解释中,调整了随机排序示例。Math.random()返回一个介于0和1之间的数字。因此,我减去了0.5以随机返回一个负数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将自定义排序应用于此对象数组?

来自分类Dev

React Native:如何将自定义函数应用于对象数组,并在Javascript中返回带有附加字段的修改后的数组?

来自分类Dev

将自定义主题应用于Odoo应用

来自分类Dev

将自定义属性应用于“代码优先实体”框架对象

来自分类Dev

将自定义numba njit函数应用于熊猫滚动对象

来自分类Dev

将自定义属性应用于“代码优先实体”框架对象

来自分类Dev

将自定义样式应用于微调器

来自分类Dev

无法将自定义listSelector应用于ListView

来自分类Dev

将自定义函数应用于数据框

来自分类Dev

将自定义功能应用于熊猫df

来自分类Dev

将自定义累积功能应用于熊猫

来自分类Dev

将自定义累积功能应用于熊猫

来自分类Dev

如何将自定义字体应用于Android应用中的每个TextView

来自分类Dev

如何将自定义JsonConverter应用于字典中列表中的值?

来自分类Dev

将自定义主题应用于PreferenceFragment中的ActionBar

来自分类Dev

将自定义函数应用于r中的每一行

来自分类Dev

将自定义字体应用于PHP echo中的表单元格

来自分类Dev

将自定义主题应用于PreferenceFragment中的ActionBar

来自分类Dev

将自定义分页器应用于选项卡中的多个表

来自分类Dev

如何将自定义重试策略应用于 Azure 函数中的 Eventhub 绑定

来自分类Dev

将自定义主题应用于 SciChart Android 中的 SciChartSurface

来自分类Dev

如何将自定义主题应用于Google自定义搜索?

来自分类Dev

将自定义函数应用于R中数据帧中每一行的两列

来自分类Dev

将自定义函数应用于多个文件并在R中创建唯一的csv输出

来自分类Dev

在next.js中,如何将自定义CSS类和引导类同时应用于元素

来自分类Dev

R将自定义矢量化函数应用于数据帧中的行,特定列

来自分类Dev

将自定义对象数组保存在NSUserDefaults中

来自分类Dev

如何在自定义图标的帮助下将自定义链接应用于CKEditor中的现有文本

来自分类Dev

将自定义函数应用于具有通用名称的任何数据集

Related 相关文章

  1. 1

    如何将自定义排序应用于此对象数组?

  2. 2

    React Native:如何将自定义函数应用于对象数组,并在Javascript中返回带有附加字段的修改后的数组?

  3. 3

    将自定义主题应用于Odoo应用

  4. 4

    将自定义属性应用于“代码优先实体”框架对象

  5. 5

    将自定义numba njit函数应用于熊猫滚动对象

  6. 6

    将自定义属性应用于“代码优先实体”框架对象

  7. 7

    将自定义样式应用于微调器

  8. 8

    无法将自定义listSelector应用于ListView

  9. 9

    将自定义函数应用于数据框

  10. 10

    将自定义功能应用于熊猫df

  11. 11

    将自定义累积功能应用于熊猫

  12. 12

    将自定义累积功能应用于熊猫

  13. 13

    如何将自定义字体应用于Android应用中的每个TextView

  14. 14

    如何将自定义JsonConverter应用于字典中列表中的值?

  15. 15

    将自定义主题应用于PreferenceFragment中的ActionBar

  16. 16

    将自定义函数应用于r中的每一行

  17. 17

    将自定义字体应用于PHP echo中的表单元格

  18. 18

    将自定义主题应用于PreferenceFragment中的ActionBar

  19. 19

    将自定义分页器应用于选项卡中的多个表

  20. 20

    如何将自定义重试策略应用于 Azure 函数中的 Eventhub 绑定

  21. 21

    将自定义主题应用于 SciChart Android 中的 SciChartSurface

  22. 22

    如何将自定义主题应用于Google自定义搜索?

  23. 23

    将自定义函数应用于R中数据帧中每一行的两列

  24. 24

    将自定义函数应用于多个文件并在R中创建唯一的csv输出

  25. 25

    在next.js中,如何将自定义CSS类和引导类同时应用于元素

  26. 26

    R将自定义矢量化函数应用于数据帧中的行,特定列

  27. 27

    将自定义对象数组保存在NSUserDefaults中

  28. 28

    如何在自定义图标的帮助下将自定义链接应用于CKEditor中的现有文本

  29. 29

    将自定义函数应用于具有通用名称的任何数据集

热门标签

归档