为了账号安全,请及时绑定邮箱和手机立即绑定

按重量对列表进行排序,选择项目的开头并为其分配自定义重量

按重量对列表进行排序,选择项目的开头并为其分配自定义重量

开满天机 2021-06-15 12:22:48
我想根据元素的标题/描述对列表进行排序。根据第一个词,分配权重以稍后定义自定义订单。从:列表 4 200 中的第三个元素列表 3 200 中的第一个元素列表 3 200 中的第一个元素列表 5 200 中的第四个元素列表 2 200 中的第二个元素列表 2 200 中的第二个元素至:列表 3 200 中的第一个元素列表 3 200 中的第一个元素列表 2 200 中的第二个元素列表 2 200 中的第二个元素列表 4 200 中的第三个元素列表 5 200 中的第四个元素我们未控制的任何标题将被分配一个预定的权重(最重),以便它出现在最后。var list = $('.list');var listItems = list.children('li').get();$(listItems).each(function() {  var $this = $(this);  var description, focusDescription;  var weight;    description = $this.find('span.description a').text();  focusDescription = description.split(' ')[0];  switch (focusDescription) {    case 'First':      weight = 1;      // code block logic      break;    case 'Second':      weight = 2;      // code block logic      break;    case 'Third':      weight = 3;      // code block logic      break;    case 'Fourth':      weight = 4;      // code block logic      break;    default:      weight = 5;      // code block logic  }});listItems.sort(function(a, b) {  // code block logic})$.each(listItems, function(idx, itm) {  list.append(itm);});
查看完整描述

1 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

您可以通过定义一个 JS 对象来对这些进行排序,并将优先考虑每个单词。因此,您将使用此优先级作为排序功能的排名。您的 js 代码将如下所示:


var rank = {

    First:0,

    Second:1,

    Third:2,

    Fourth:3,

}

var list = $('.list');

var listItems = list.children('li').get();


listItems.sort(function(a, b) {

  return rank[$(a).find('span.description a').text().split(' ')[0]] - rank[$(b).find('span.description a').text().split(' ')[0]]

})

$.each(listItems, function(idx, itm) {

  list.append(itm);

});


查看完整回答
反对 回复 2021-06-18
  • 1 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信