Javascript 将数组转换为快速对象查找
上面的例子有更有效的版本吗?可能使用Javascript 将数组转换为快速对象查找,javascript,jquery,Javascript,Jquery,上面的例子有更有效的版本吗?可能使用$.map或$.extend?而不是调用分析参数的函数,然后执行调用函数的循环,只需执行一个循环: var seen = {}; $.each([6,7,11], function(i,v){ seen[v] = 1; }); // console.log(seen); jsperf证实了它的效率更高:可能一个好的旧循环比调用一个函数更有效,该函数分析参数,然后运行一个调用函数的循环。您也可以阅读jQuery文档-尝试一些东西,让我们知道它是如何运行的,然
$.map
或$.extend
?而不是调用分析参数的函数,然后执行调用函数的循环,只需执行一个循环:
var seen = {};
$.each([6,7,11], function(i,v){ seen[v] = 1; });
// console.log(seen);
jsperf证实了它的效率更高:可能一个好的旧循环比调用一个函数更有效,该函数分析参数,然后运行一个调用函数的循环。您也可以阅读jQuery文档-尝试一些东西,让我们知道它是如何运行的,然后我们可以提供更多帮助<代码>映射似乎只返回一个array@Ian我已经找到了,但什么也没找到helpful@mpapec所以,展示你所尝试过的。如果你什么都没试过,试试看。你应该了解这个库及其方法,而不是盲目地问一个问题让我们帮你弄明白。我认为香草JavaScript总是更快:)尽管能够在jQuery对象上使用
每个都很好$。每个通常都非常方便,特别是当你必须与IE8兼容时,但是效率并不是它的强项之一。我一点也不反对jQuery,但当人们开始在不必要的情况下使用jQuery时,真的很烦人,因为他们可以…@dystroy说得很好:)你说的“与IE8兼容”是什么意思?什么在IE8中不起作用?他说的是使用JavaScript1.6中定义的“forEach”方法,IE8可能不支持这种方法。
for (var i=arr.length; i-->0;) seen[arr[i]]=1;
var i = arr.length
while (i--) {
seen[arr[i]]=1;
}