Javascript 按价格分类

Javascript 按价格分类,javascript,jquery,sorting,Javascript,Jquery,Sorting,我有几种产品。每个都有一个特定的价格,我想要一个按钮来按价格排序 我的网站上的产品如下所示: 一些内容 一些内容 一些内容 ... 我将价格从PHP解析为JavaScript,因此我有一个包含所有价格和产品ID的JavaScript对象: {12:1, 20:2, 7:3} 目前,关键是价格,价值是产品的id 我想让他们在不重新加载的情况下重新排序。因此,只能使用JavaScript/jQuery。我更喜欢纯JavaScript 是否有任何方法可以根据产品的价格更改divs的顺序?您可以将价

我有几种产品。每个都有一个特定的价格,我想要一个按钮来按价格排序

我的网站上的产品如下所示:

一些内容
一些内容
一些内容
...
我将价格从PHP解析为JavaScript,因此我有一个包含所有价格和产品ID的JavaScript对象:

{12:1, 20:2, 7:3}
目前,关键是价格,价值是产品的id

我想让他们在不重新加载的情况下重新排序。因此,只能使用JavaScript/jQuery。我更喜欢纯JavaScript


是否有任何方法可以根据产品的价格更改
div
s的顺序?

您可以将价格HTML放入div中:

<div id="price_list">

</div>
您将能够使用以下代码进行排序和显示:

prices.sort(function(a, b) {
    return parseFloat(a.price) - parseFloat(b.price);
});
// Your array is sorted

$('#price_list').html('');
prices.forEach(function(entry) {
    $('#price_list').append('<div class="product" id="pr_'+entry.id+'">'+entry.price+' dollars</div>');
});
prices.sort(函数a、b){
返回parseFloat(a.价格)-parseFloat(b.价格);
});
//您的数组已排序
$(“#价目表”).html(“”);
prices.forEach(函数(条目){
$('price_list')。追加(''+entry.price+'dollars');
});
我希望你没事


如果您想按规范进行排序,可以这样做(注意:列表是数组,而不是对象)。 然而,杰德玛的答案是正确的

`$(document).ready(function() {
  var list = [[1,19], [2,10], [3,5], [4, 22]];

  list.sort(function(a,b) {
      return a[1] - b[1];
  });

  for(i=0;i<list.length;i++){
    var $product = $(".parent").find(".product[data-id=" + list[i][0]+"]");
    $(".newparent").append($product);
  }

});`
`$(document).ready(function(){
var list=[[1,19]、[2,10]、[3,5]、[4,22];
列表.排序(函数(a,b){
返回a[1]-b[1];
});

对于(i=0;i如果两个产品的价格相同,会发生什么情况?它们应该紧挨着彼此,但哪一个是第一个并不重要。好吧,但如果你使用价格作为关键对象,它必须是唯一的。否则你只能按价格获得一个产品。我认为最好将价格作为关键,这样更容易按照价格对产品进行排序。但我也可以用另一种方法。因此,id将是键,如果它能以这种方式工作,则为值定价。如果您使用JQuery,请看一看,它可能会帮助您消除一个旁注:
.sort
原型无法处理
对象
,因此如果您要对其进行排序,必须将对象转换为数组(与上面的示例类似,其中列表是一个
数组
)。
`$(document).ready(function() {
  var list = [[1,19], [2,10], [3,5], [4, 22]];

  list.sort(function(a,b) {
      return a[1] - b[1];
  });

  for(i=0;i<list.length;i++){
    var $product = $(".parent").find(".product[data-id=" + list[i][0]+"]");
    $(".newparent").append($product);
  }

});`