2015-07-10 152 views

回答

0
// object 
var obj = your_obj; 
var matchedClass = "your_matched_class"; 
var filteredObj = {}; 
for (var key in obj) { // iterating over object and checking for class 
    if (obj.hasOwnProperty(key) && obj[key].class === matchedClass) { 
     filteredObj[key] = obj[key]; 

    } 
} 
+0

太棒了!它按預期工作,糾正我,如果我錯了會比使用像'過濾器'這樣的本地函數更快或更慢? –

+0

在我們的場景中,我們可以使用filter/grep,但是首先我們必須將obj轉換爲數組,然後再次將數組轉換爲對象,我覺得這是不合適的,並且會變慢。讓我們說,我們可以使用一些本地函數,但是,內部也會執行迭代和檢查屬性。我相信上面的內容不會影響你的性能 – nikhil

0

如果你正在尋找一種工具/框架,以使這個容易,這聽起來像你後lodash

它支持_.filter,以及其他方便的功能,這可能會幫助你處理之後。如果您可以更具體地瞭解您的期望輸出,我們可以幫助您獲得特定的答案。

0

可以遍歷對象的關鍵有:

var keys = Object.keys(myObj)

,然後篩選鍵列表:

var matchingKeys = keys.filter(function(key) { 
    return myObj[key].class === 'somevalue')` 
} 

,然後抓住這些鍵調出的對象。

+0

你的代碼返回一個數組,其鍵符合過濾標準,那麼只用這些鍵獲得原始對象副本的最快方法是...... –