-5

我正在<a>使用 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()));
});

方法一和方法二的优缺点是什么?

4

1 回答 1

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使用普通的老式 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 测试

于 2013-09-20T08:07:07.450 回答