2015-06-04 62 views
-1

選項值我在JavaScript中的下列對象:的Javascript如何找到對象循環

var group = { 
     'object1': { 
      option1: '', 
      option2: false 
     }, 
     'object2': { 
      option1: '', 
      option2: true 
     }, 
     'object3': { 
      option1: '', 
      option2: true 
     } 
    }; 

我如何通過以group循環中找到每一個object擁有的trueoption2

例如,給我的['object2', 'object3']

+5

使用'for',盧克。 – zerkms

+2

**注意:**不要依賴對象來給你一致的順序。不同的JS引擎行爲有所不同。如果訂單很重要,請使用數組。 – brianreavis

回答

3
var group = { 
    'object1': { 
     option1: '', 
     option2: false 
    }, 
    'object2': { 
     option1: '', 
     option2: true 
    }, 
    'object3': { 
     option1: '', 
     option2: true 
    } 
}; 

var filtered = []; 

for (var i in group){ 
    if (group[i].option2 === true){ 
     filtered.push(i); 
    } 
} 

// filtered is now ['object2', 'object3'] 
+1

'if(group [i] .option2 === true){'可以縮寫爲'if(group [i] .option2){' –

2

陣列您可以使用Object.keys功能的方法:

var group = { 
 
    'object1': { 
 
     option1: '', 
 
     option2: false 
 
    }, 
 
    'object2': { 
 
     option1: '', 
 
     option2: true 
 
    }, 
 
    'object3': { 
 
     option1: '', 
 
     option2: true 
 
    } 
 
}; 
 

 
var match= Object.keys(group).filter(function(val) { 
 
    return group[val].option2; 
 
}); 
 

 
document.body.innerHTML= JSON.stringify(match);

+0

如果鍵是空的,返回val可能會給出錯誤的否定結果串。你爲什麼不在那裏返回'true'? – zerkms

+0

這樣做更有意義,謝謝!更新。 –

+0

是否有過濾對象列表本身而不僅僅是鍵的功能方式? –