Javascript 从一组DOM元素中获取最高属性值

Javascript 从一组DOM元素中获取最高属性值,javascript,jquery,Javascript,Jquery,我有一组具有数据属性的DOM元素。如何获得最大值 <li data-for-something="1"></li> <li data-for-something="1"></li> <li data-for-something="2"></li> <li data-for-something="3"></li> <li data-for-something="4"></li>

我有一组具有数据属性的DOM元素。如何获得最大值

<li data-for-something="1"></li>
<li data-for-something="1"></li>
<li data-for-something="2"></li>
<li data-for-something="3"></li>
<li data-for-something="4"></li>
我喜欢这样:

function getMaxAttributeValue(attribute_name) {
  return Math.max.apply( Math, $('[' + attribute_name + ']').map(function(){
    return Number($(this).attr(attribute_name)) || -Infinity;
  }))
}

console.log(getMaxAttributeValue("data-for-something"))  // outputs 4

我认为@juvian的答案可能是最好的,但是在我看到他的答案之前,我已经摆弄过了,所以我想我要分享我想要的方式。它不是一个函数,但与html结构完美配合。我使用了
dataset
属性

var array = new Array;

$('li').each( function() { 
    array.push(parseInt($(this)[0].dataset.forSomething));
});

console.log(Math.max.apply(Math, array)); 

我在这把小提琴上加了这样一句话:

@DonnyP如果你有一个非数字属性,即使你有一个带有
数据的li=“a”
var array = new Array;

$('li').each( function() { 
    array.push(parseInt($(this)[0].dataset.forSomething));
});

console.log(Math.max.apply(Math, array));