如何使用js正确排序项目

时间:2019-02-07 12:52:36

标签: javascript jquery

我搜索了与此类似的问题,但是这些并不能解决我的问题。 我有一张显示物品的引导卡。而且我有一个过滤器,可以按喜欢的票数来排序这张卡,但是当我触发js函数时,排序效果不佳(看起来像是随机排序)。

html:

 <a class="like badge" onclick="vote('{% url 'like_item' pk=item.pk %}', '.liked_item_{{item.id}}', '.disliked_item_{{item.id}}', '.like_{{item.id}}', '.dislike_{{item.id}}')" href="javascript:void(0)">
        <span class="liked_item_{{item.id}} liked_votes">
          {{ item.count_likes }}
        </span>
      </a>

js:

if(this.name == 'thumbsUp'){
    var thumbsUpOrderedDivs = $divs.sort(function (a, b) {
        return $(a).find('.liked_votes').text() < $(b).find('.liked_votes').text();
    });
    $("#idea-list-group").html(thumbsUpOrderedDivs);
}

2 个答案:

答案 0 :(得分:2)

您应该使用 String.prototype.localeCompare()

  

localCompare :localeCompare()方法返回一个数字,该数字指示参考字符串在排序顺序之前还是之后还是与给定字符串相同

if(this.name == 'thumbsUp'){
    var thumbsUpOrderedDivs = $divs.sort(function (a, b) {
        return ($(a).find('.liked_votes').text() + '').localeCompare($(b).find('.liked_votes').text());
    });
    $("#idea-list-group").html(thumbsUpOrderedDivs);
}

答案 1 :(得分:1)

尝试将文本解析为数字

`<-` <- function(e1,e2) {
  .Primitive("<-")(lhs, match.call()[[2]])
  if(length(lhs) > 1 && identical(lhs[[1]],quote(`==`))) {
    invisible(eval.parent(substitute(
      .Primitive("<-")(e1,e2),
      list(e1=substitute(e1), 
           e2= substitute(`class<-`(quote(e2),"delayed"))
      ))))
  } else {
    invisible(eval.parent(substitute(.Primitive("<-")(e1,e2))))
  }
}

x <- 4
x == 100 <-stop("equals 100!")
x <- 100
x == 100 <-stop("equals 100!")
# Error in eval(expr, envir, enclos) : equals 100! 
    var thumbsUpOrderedDivs = $(".liked_votes").sort(function (a, b) {
        return  parseInt($(a).text()) - parseInt($(b).text());
    });
    
    $(".badge").html(thumbsUpOrderedDivs);