2013-07-03 25 views
-1
var seen = {}; 
$.each([6,7,11], function(i,v){ seen[v] = 1; }); 

// console.log(seen); 

上面的例子是否有更高效的版本?也許使用$.map$.extend將數組轉換爲快速查找對象

+6

可能是一個好的老循環會比調用分析參數的函數更有效,然後運行調用函數的循環。 –

+0

你也可以閱讀jQuery文檔 - 嘗試一下,讓我們知道它是如何去的,然後我們可以提供更多幫助。 'map'似乎只返回一個數組 – Ian

+0

@Ian我已經有了,但是沒有發現任何有用的信息 –

回答

2
var i = arr.length 
while (i--) { 
    seen[arr[i]]=1; 
} 
3

與其說它分析的參數再函數執行一個循環調用一個函數,只需做一個循環:

for (var i=arr.length; i-->0;) seen[arr[i]]=1; 

jsperf確認這是更有效的:http://jsperf.com/each-or-for666

+0

我認爲香草JavaScript總是更快:)雖然很高興能夠在jQuery上使用'each'對象 – Ian

+0

'$ .each'通常非常方便,尤其是當你必須與IE8兼容時,效率並不是它的優勢。 –

+0

我並不反對jQuery,但當人們開始在不必要的情況下使用jQuery時,真的很煩人,因爲他們可以... – Reimius