我有一個Java腳本,看起來像這樣在瀏覽器控制檯過濾JavaScript對象
https://www.dropbox.com/s/53spm6lf7o6oa8z/Selecci%C3%B3n_2015-07-10-001.png
我想要做的是返回基於產權「下課」的內容過濾的對象...我一直在研究JQuery的.grep()或.filter(),但它們並不完美,因爲這個對象不是一個數組,並且我還沒有能夠轉換成一個...
I將欣賞指向正確方向的指針
我有一個Java腳本,看起來像這樣在瀏覽器控制檯過濾JavaScript對象
https://www.dropbox.com/s/53spm6lf7o6oa8z/Selecci%C3%B3n_2015-07-10-001.png
我想要做的是返回基於產權「下課」的內容過濾的對象...我一直在研究JQuery的.grep()或.filter(),但它們並不完美,因爲這個對象不是一個數組,並且我還沒有能夠轉換成一個...
I將欣賞指向正確方向的指針
// 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];
}
}
如果你正在尋找一種工具/框架,以使這個容易,這聽起來像你後lodash
它支持_.filter,以及其他方便的功能,這可能會幫助你處理之後。如果您可以更具體地瞭解您的期望輸出,我們可以幫助您獲得特定的答案。
可以遍歷對象的關鍵有:
var keys = Object.keys(myObj)
,然後篩選鍵列表:
var matchingKeys = keys.filter(function(key) {
return myObj[key].class === 'somevalue')`
}
,然後抓住這些鍵調出的對象。
你的代碼返回一個數組,其鍵符合過濾標準,那麼只用這些鍵獲得原始對象副本的最快方法是...... –
太棒了!它按預期工作,糾正我,如果我錯了會比使用像'過濾器'這樣的本地函數更快或更慢? –
在我們的場景中,我們可以使用filter/grep,但是首先我們必須將obj轉換爲數組,然後再次將數組轉換爲對象,我覺得這是不合適的,並且會變慢。讓我們說,我們可以使用一些本地函數,但是,內部也會執行迭代和檢查屬性。我相信上面的內容不會影響你的性能 – nikhil