Javascript each()函数-优化了哪个方法?

Javascript each()函数-优化了哪个方法?,javascript,jquery,each,Javascript,Jquery,Each,我正在使用jQuery.each()函数检索元素中的文本值,并将其存储在数组中。我已经找到了以下两种方法,不确定我更喜欢哪一种 var textArr = []; // Method 1 var textLinks = $("a").each(function(){ textArr.push($.trim($(this).text())); }); //Method 2 $("a").each(function(){ textArr.push($.trim($(this).

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

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的优缺点是什么?

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

编辑:如果我在寻找最快的解决方案,我会先抛弃jQuery;)

或者,如果您担心浏览器没有
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,[]))

它们都是相同的,只是在第一次将
$(“a”)
的结果分配到一个变量中差异在哪里?测试它:
$(“a”)。每个(函数(k,v){textArr[k]=$.trim($(this.text());})应该快一点。你一定要在这里使用
$.map
“你更喜欢哪种方法?”堆栈溢出不是用于调查,而是用于提问并给出具体答案。有关详细信息,请参阅帮助。jashwant的上述评论似乎比您的帖子快@格林先生,我使用了
map
,因为它清楚地表达了代码的意图——“用根据这些规则转换的每个元素创建一个新的列表”,而
每个
都意味着“对列表中的每个元素做点什么”。+1我从上一种方法中了解了更多关于JS的知识:)
var textLinks = (Array.prototype.slice.call(document.links)).map(function(a){ return a.textContent || a.innerText })
var textLinks = (function(links, out){ 
    var i = links.length, a; 
    while(a = links[--i]){ out[i] = a.textContent || a.innerText } 
    return out; 
}(document.links,[]))