【问题标题】:find minimum and maximum value in attribute using jquery使用jquery查找属性中的最小值和最大值
【发布时间】:2016-10-13 17:31:43
【问题描述】:

我需要在数据属性中找到最小值和最大值,但它返回 0

这是我的代码

<div data-price="2" class="maindiv">test</div>
<div data-price="5" class="maindiv">test</div>
<div data-price="3" class="maindiv">test</div>
<div data-price="0" class="maindiv">test</div> 
<div data-price="25" class="maindiv">test</div>     
<div data-price="10" class="maindiv">test</div> 

<script>
    var ids = $("div[data-price]").map(function() {
        return this.id;
    }).get();

    var highest = Math.max.apply( Math, ids );
    var lowest = Math.min.apply( Math, ids );

    alert(highest);
    alert(lowest);
</script>

【问题讨论】:

  • 这些答案是否为您的问题提供了解决方案?

标签: javascript jquery max min


【解决方案1】:

目前,您正在从 map 函数返回 id 属性。改成data-price

var ids = $("div[data-price]").map(function() {
  return $(this).data("price");
}).get();
var highest = Math.max.apply( Math, ids );
var lowest = Math.min.apply( Math, ids );
alert(highest)
alert(lowest)

Fiddle

【讨论】:

    【解决方案2】:

    你需要返回 data-price 属性,而不是它的 id

    var ids = $("div[data-price]").map(function() {
        return $(this).attr("data-price");
    }).get();
    
    var highest = Math.max.apply( Math, ids );
    var lowest = Math.min.apply( Math, ids );
    
    alert(highest);
    alert(lowest);
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div data-price="2" class="maindiv">test</div>
    <div data-price="5" class="maindiv">test</div>
    <div data-price="3" class="maindiv">test</div>
    <div data-price="0" class="maindiv">test</div> 
    <div data-price="25"class="maindiv">test</div>     
    <div data-price="10" class="maindiv">test</div>

    【讨论】:

      【解决方案3】:

      你可以用普通的 JavaScript 做到这一点:

      //Variable to hold our results
      var data = [];
      //Loop through HTML nodes
      for (var i = 0; i < document.querySelectorAll(".maindiv").length; i++) {
      	data.push({
      		node : document.querySelectorAll(".maindiv")[i],
      		value : parseInt(document.querySelectorAll(".maindiv")[i].getAttribute("data-price"))
      	});
      }
      //Sort lowest to highest (Only use one sort! Pick either this or the next one as they overwrite each Other)
      data = data.sort(function (a, b) {
      		return a.value - b.value;
      	});
      //Sort highest to lowest (Only use one sort! Pick either this or the last one as they overwrite each Other)
      data = data.sort(function (a, b) {
      		return b.value - a.value;
      	});
      //List all
      console.log(data);
      //List first (highest or lowest depending or sort)
      console.log('first', data[0].value);
      //List last (highest or lowest depending or sort)
      console.log('last', data[data.length-1].value);
      <div data-price="2" class="maindiv">test</div>
      <div data-price="5" class="maindiv">test</div>
      <div data-price="3" class="maindiv">test</div>
      <div data-price="0" class="maindiv">test</div> 
      <div data-price="25" class="maindiv">test</div>     
      <div data-price="10" class="maindiv">test</div>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-16
        • 1970-01-01
        • 2016-08-08
        • 1970-01-01
        • 2017-09-20
        • 2017-04-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多