获得此阵列最优雅的方法是什么
[10, 20, 30, 40, 50]
Run Code Online (Sandbox Code Playgroud)
在此列表之外
<ul>
<li value="10">Item One</li>
<li value="20">Item Two</li>
<li value="30">Item three</li>
<li value="40">Item Four</li>
<li value="50">Item Five</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
使用jQuery.
sam*_*one 62
****编辑****
好的,手套已被抛下......
var elements = (document.getElementsByTagName('li'));
var vals = [];
for(var i=0;typeof(elements[i])!='undefined';vals.push(elements[i++].getAttribute('value')));
Run Code Online (Sandbox Code Playgroud)
没库3行代码......
史诗般的更快
var myVals = [];
$('li','ul').each(function(){
myVals.push($(this).attr('value'));
});
Run Code Online (Sandbox Code Playgroud)
并使用jquery的map函数...
var myVals = [];
$('li','ul').map(function(){
myVals.push($(this).attr('value'));
});
Run Code Online (Sandbox Code Playgroud)
而且它们都同样快......
http://jsperf.com/testing-stuff
nat*_*lds 29
我认为地图工作得很好..只是不在链中.
var vals = $.map($("li[value]"), function(li) {
return $(li).attr("value");
});
Run Code Online (Sandbox Code Playgroud)
var outVal = [];
$('ul li').each(function(idx, el){
outVal.push($(this).attr('value'));
});
Run Code Online (Sandbox Code Playgroud)
说到优雅的代码,我们可以使用Underscore结合jQuery获得更好的解决方案:
_($('ul li').toArray()).map(function(e) { return e.value })
Run Code Online (Sandbox Code Playgroud)
虽然我们在这里,为什么不为CoffeeScript转储Javascript:
_($('ul li').toArray()).map (e) -> e.value
Run Code Online (Sandbox Code Playgroud)
;-)