javascript - 按匹配数据 id 分组并按另一个数据属性排序
问题描述
是否可以通过匹配 data-id 对多个 div 进行分组并按另一个数据属性对其进行排序。这可以用 underscorejs 或纯 javascript 完成吗?
div 的当前布局 和 所需的输出
<div id="parentID">
<div data-id="71" data-orderby="2" class="child">ID: 71 Order 2</div>
<div data-id="71" data-orderby="3" class="child">ID: 71 Order 3</div>
<div data-id="71" data-orderby="1" class="child">ID: 71 Order 1</div>
<div data-id="62" data-orderby="2" class="child">ID: 62 Order 2</div>
<div data-id="62" data-orderby="1" class="child">ID: 62 Order 1</div>
<div data-id="59" data-orderby="1" class="child">ID: 59 Order 1</div>
<div data-id="59" data-orderby="3" class="child">ID: 59 Order 3</div>
<div data-id="59" data-orderby="2" class="child">ID: 59 Order 2</div>
</div>
<div id="parentID">
<div data-id="71" data-orderby="1" class="child">ID: 71 Order 1</div>
<div data-id="71" data-orderby="2" class="child">ID: 71 Order 2</div>
<div data-id="71" data-orderby="3" class="child">ID: 71 Order 3</div>
<div data-id="62" data-orderby="1" class="child">ID: 62 Order 1</div>
<div data-id="62" data-orderby="2" class="child">ID: 62 Order 2</div>
<div data-id="59" data-orderby="1" class="child">ID: 59 Order 1</div>
<div data-id="59" data-orderby="2" class="child">ID: 59 Order 2</div>
<div data-id="59" data-orderby="3" class="child">ID: 59 Order 3</div>
</div>
解决方案
您可以对您的div
onid
和orderby
属性进行排序。
$(function() {
$("#parentID div").sort((a,b) => {
return $(b).data('id') - $(a).data('id') || $(a).data('orderby') - $(b).data('orderby');
}).appendTo('#parentID');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="parentID">
<div data-id="71" data-orderby="2" class="child">ID: 71 Order 2</div>
<div data-id="71" data-orderby="3" class="child">ID: 71 Order 3</div>
<div data-id="71" data-orderby="1" class="child">ID: 71 Order 1</div>
<div data-id="62" data-orderby="2" class="child">ID: 62 Order 2</div>
<div data-id="62" data-orderby="1" class="child">ID: 62 Order 1</div>
<div data-id="59" data-orderby="1" class="child">ID: 59 Order 1</div>
<div data-id="59" data-orderby="3" class="child">ID: 59 Order 3</div>
<div data-id="59" data-orderby="2" class="child">ID: 59 Order 2</div>
</div>
推荐阅读
- angular - 获取 ng-content 的原始/原始模板值
- elasticsearch - 如何在 Jelastic 上设置 elasticsearch 集群?连接被拒绝
- python - pynput 代码没有给我一个简单的字符串作为键
- tinymce - Tiny.Cloud 不添加域名
- javascript - resize-img module expected `buffer` to be of type `Buffer` but received type `object`. Logging argument returns buffer
- ruby-on-rails - Generic model that has many relationship depending on value of enum
- c - How to properly display names of directories and their subdirectories from a linked list?
- javascript - Why i cant get the object value instead of names: [ [Object], [Object], [Object], [Object] ]?
- python - Difficulties of scraping using requests/pandas/beautiful soup caused by script
- java - Java Hashmap value check