【问题标题】:Best way to sort array based of different sets of data? [duplicate]根据不同数据集对数组进行排序的最佳方法? [复制]
【发布时间】:2021-12-22 13:21:46
【问题描述】:
var array = [{value:"13",type:"Fruit"},{value:"61",type:"Animal"},
             {value:"19",type:"Fruit"},{value:"71",type:"Animal"},
             {value:"12",type:"Fruit"},{value:"15",type:"Fruit"}, 
             {value:"11",type:"Plant"},{value:"10",type:"Fruit"}, 
             {value:"16",type:"Plant"}] 

对这个数组进行排序的最佳/优化方法是什么,这样我首先得到 Fruit 类型的所有元素,然后是 Animal 类型的元素(通过从数组末尾挑选元素)。

expectedOutput = [{value:"10",type:"Fruit"}, 
             {value:"15",type:"Fruit"},{value:"12",type:"Fruits"},
             {value:"19",type:"Fruit"},{value:"13",type:"Fruit"},
             {value:"71",type:"Animal"},{value:"61",type:"Animal"}, 
             {value:"16",type:"Plant"},{value:"11",type:"Plant"}]

注意:- 我不需要按字母顺序排序。必须根据具体类型进行排序。

【问题讨论】:

    标签: javascript arrays data-structures


    【解决方案1】:

    您可以将type属性的顺序存储在一个数组中,然后在排序时减去type属性的索引以确定优先级:

    const order = ["Fruits", "Animal"]
    
    var array = [{value:"13",type:"Fruit"},{value:"61",type:"Animal"},
                 {value:"19",type:"Fruit"},{value:"71",type:"Animal"},
                 {value:"12",type:"Fruit"},{value:"15",type:"Fruit"}] 
    
    const sorted = array.sort((a,b) => order.indexOf(a.type) - order.indexOf(b.type))
    
    console.log(sorted)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-19
      • 2023-02-24
      • 1970-01-01
      • 1970-01-01
      • 2010-09-07
      • 2017-05-23
      • 1970-01-01
      • 2021-12-23
      相关资源
      最近更新 更多