【问题标题】:Sorting array with specific keywords/string [duplicate]使用特定关键字/字符串对数组进行排序[重复]
【发布时间】:2019-02-26 23:51:36
【问题描述】:

我正在处理逻辑框架,我想按此顺序对数组进行排序

  • 影响
  • 结果
  • 输出
  • 活动

我有这样的数组

{ id : 15 , parentId : 18 , type : OUTPUT , sequence : 1 },
{ id : 16 , parentId : 15 , type : OUTCOME , sequence : 1 },
{ id : 18 , parentId : null , type : IMPACT , sequence : 1 },
{ id : 14 , parentId : null , type : IMPACT , sequence : 2 },
{ id : 17 , parentId : 14, type : OUTCOME , sequence : 1 },

这是来自数据库的原始数据并通过序列排序

我想将所有“IMPACT”类型排序为数组中的第一个,然后以此类推...

{ id : 18 , parentId : null , type : IMPACT , sequence : 1 },
{ id : 14 , parentId : null , type : IMPACT , sequence : 2 },
{ id : 16 , parentId : 15 , type : OUTCOME , sequence : 1 },
{ id : 17 , parentId : 14, type : OUTCOME , sequence : 2 },
{ id : 15 , parentId : 18 , type : OUTPUT , sequence : 1 },

【问题讨论】:

  • Duplicate 按特定属性部分覆盖对象的排序数组;如果您需要该属性的值中的“特殊顺序”,您可以通过例如在数组中以正确的顺序指定它们,然后检查什么索引来实现。
  • 我真的在寻找特殊订单,但我不知道合适的术语。感谢您指出:) 非常感谢

标签: javascript typescript


【解决方案1】:

查看 Array.sort,并将您自己的自定义比较函数传递给它:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

例如,这样的事情应该可以工作:

arrayFromDatabase.sort(function(a, b) {
    if (a.type === IMPACT && b.type !== IMPACT) {
        return -1;
    } else if (a.type !== IMPACT && b.type === IMPACT) {
        return 1;
    } else {
        return a.sequence - b.sequence;
    }
});

请注意,为简洁起见,我将您提到的其他类型作为练习留给读者。

【讨论】:

    猜你喜欢
    • 2021-11-24
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 2021-12-14
    相关资源
    最近更新 更多