使用javascript对元素列表进行分类/分组和排序的最佳方法是什么?

使用javascript对元素列表进行分类/分组和排序的最佳方法是什么?,javascript,jquery,Javascript,Jquery,我有一个元素列表,其中包含一些属性,如 doc.title = 'some title' doc.category = 'book' doc.year = '2016' 其他可能的类别可以是纸张、文章等 现在,假设有两个按钮“按类别排序”和“按年份排序” 单击“按类别排序”时,列表应如下所示: Book 1. book 1 2. book 2 Paper 1. paper 1 2. paper 2 Article 1. article 1 2. article 2 单击“按年份排序”按钮

我有一个元素列表,其中包含一些属性,如

doc.title = 'some title'
doc.category = 'book'
doc.year = '2016'
其他可能的类别可以是纸张、文章等

现在,假设有两个按钮“按类别排序”和“按年份排序”

单击“按类别排序”时,列表应如下所示:

Book
1. book 1
2. book 2

Paper
1. paper 1
2. paper 2

Article
1. article 1
2. article 2
单击“按年份排序”按钮时

2016
1.
2.
3.

2015
1.
2.
等等


我想在保持html页面尽可能小的同时做到这一点。请让我知道实现这一点的最佳方法。

类似的内容应该可以让您开始-代码注释中有解释():

对于显示,您可以使用
For…of
进行分解:

for (let [category, items] of group(data, 'category')) {
    console.log(`
       <div class="item">
          <h3>${category}</h3>
          <ol>${items.map(item => `<li>${item.title}</li>`).join('')}</ol>
       </div>
    `);
}
for(让组(数据,'category')的[category,items]){
console.log(`
${category}
${items.map(item=>`
  • ${item.title}
  • `).join(“”)} `); }

    请注意,尽管我一直使用ES6,但可以很容易地将其重构为更向后兼容。

    共享元素列表使用类似Datatables的库。显示当前htmlcode@BarmarDatatables没有具有类别名称的功能。它具有行分组:
    for (let [category, items] of group(data, 'category')) {
        console.log(`
           <div class="item">
              <h3>${category}</h3>
              <ol>${items.map(item => `<li>${item.title}</li>`).join('')}</ol>
           </div>
        `);
    }