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

时间:2013-09-20 07:50:24

标签: javascript jquery each

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

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的缺点?

1 个答案:

答案 0 :(得分:1)

我使用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的浏览器使用普通的旧循环。看起来像一团糟,但很快。

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

Added to jsperf test