循环遍历打字稿中的对象数组并获取特定的 Es6 语法失败



我有几个对象,我想得到一个并检查特定的属性

所以我有

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.keysfilter

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>

最新更新