我有几个对象,我想得到一个并检查特定的属性
所以我有
data: [{is_guest: true},{permission:'is_allowed_ip'}]
现在当我检查console.log(route.data)
时
0:{is_guest:true},
1:{permission:'is_allowed_ip' }
typeof route.data
是一个对象
现在我想用 is_guest:true 获取对象
所以我试过了
const data = Object.keys(route.data).map((index) => {
if (route.data[index].is_guest) {
return route.data[index]
}
});
console.log("route data is",data) //this still returns all the items
但是上述操作无法返回所有对象。 如何遍历所有对象并仅检索一个具有is_guest键和值 true 的对象
听起来你想要Object.values
,而不是Object.keys
,filter
:
const data = Object.values(route.data).filter(e => e.is_guest);
Object.values
是相当新的,但存在于最新的节点上,并且完全可填充。
例:
const route = {
data: [
{is_guest: true},
{permission:'is_allowed_ip'}
]
};
const data = Object.values(route.data).filter(e => e.is_guest);
console.log(data);
使用 E6:
data.filter(o => o.is_guest)
您可以使用filter
方法。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
我在您的数组中添加了一些 id,只是为了更容易理解。
// added ids to exemplify
const data = [
{id: 1, is_guest: true},
{id: 2, permission:'is_allowed_ip'},
{id: 3, is_guest: true},
{id: 4, is_guest: false},
]
// filter results
const filtered = data.filter(item => item.is_guest)
// just to show the result
document.querySelector('.debug').innerHTML = JSON.stringify(filtered, null, 2);
<pre><code class="debug"></code></pre>