jQuery .each() 函数 - 优化了哪个方法

jQuery .each() function - Which method is optimized?

本文关键字:方法 优化 each 函数 jQuery      更新时间:2023-09-26

我正在使用jQuery .each()函数检索<a>元素中存在的文本值并将其存储在数组中。我找到了以下两种方法,但不确定我应该更喜欢哪种方法。

var textArr = [];
// Method 1
var textLinks = $("a").each(function(){
    textArr.push($.trim($(this).text()));
});

//Method 2
$("a").each(function(){
    textArr.push($.trim($(this).text()));
});
方法

1和方法2的优缺点是什么?

我会使用 map() ,因为它就是为了这个目的而存在的(不需要临时数组)

var textLinks = $("a").map(function(){
    return $.trim($(this).text());
});

编辑:如果我正在寻找最快的解决方案,我会从放弃jQuery;)开始

var textLinks = (Array.prototype.slice.call(document.links)).map(function(a){ return a.textContent || a.innerText })

或者,如果您担心没有Array.map使用普通旧while循环的浏览器。看起来一团糟,但很快。

var textLinks = (function(links, out){ 
    var i = links.length, a; 
    while(a = links[--i]){ out[i] = a.textContent || a.innerText } 
    return out; 
}(document.links,[]))

添加到 jsperf 测试