我多次听说jQuery最强大的资产是它在DOM中查询和操作元素的方式:你可以使用CSS查询来创建在常规javascript中很难做到的复杂查询.不过,据我所知,就可以实现同样的结果document.querySelector或者document.querySelectorAll,这是在Internet Explorer 8和更高版本支持.
所以问题是这样的:如果使用纯JavaScript可以实现最强大的资产,为什么'冒险'jQuery的开销?
我知道jQuery不仅仅有CSS选择器,例如跨浏览器AJAX,附带好的事件等等.但它的查询部分是jQuery强大的一部分!
有什么想法吗?
我测量了这两个函数的执行时间:
使用Chrome配置文件工具测量了以下方法的执行情况:
// jQuery GREP function
function alternative1(words, wordToTest) {
  return $.grep(words, function(word) {
    return wordToTest.indexOf(word) != -1;                    
  });
}
// Native javascript FILTER function        
function alternative2(words, wordToTest) {
  return words.filter(function(word) {
    return wordToTest.indexOf(word) != -1;                    
  });
}
数组由words100万个随机生成的字符串构成.每种方法运行20次.令我惊讶的是jQuerygrep功能更快.
执行时间(20次执行):
你可以在这个jsFidle上重复测量- 执行需要一些时间,所以请耐心等待.
有没有解释为什么jQuery grep函数比原生 JavaScript 过滤器功能更快?
PS:这个问题的灵感来自于这个答案.
可以说我有这个阵列
[{k:2, v:"Stack"}, {k:5, v:"Over"}, , {k:9, v:"flow"}]
如何选择值<= 5的所有键之类的元素?或奇数编号键上的前2个元素或所有值(拼写溢出)
我不想使用for/foreach循环.我正在寻找像jquery这样的东西,我可以在它匹配的东西上应用一些东西.有点像将newclassproperty应用于组类的所有dom内部
$('.group a').addClass('newclassproperty')