我有以下数组:
人物清单
[ {id:1, name:"Brian", status:"active"}, {id:2, name:"Mary", status:"active"},
{id:3, name:"John", status:"pending"}, {id:4, name:"Steph", status:"pending"},
{id:5, name:"Peter", status:"inactive"}
]
statusList
[ 'active', 'pending']
我只想将对象数组过滤为statusList,所以我做了以下工作:
var filteredPeople =PeopleList.map(person => {
for (var i=0; i<=statusList.length; i++){
if(statusList[i] == person.active)
return {...person};
}
});
当人员对象正确返回时,对于未通过条件语句的对象,我也会得到“未定义”。
所以我的结果是:
[object, object, object,object, undefined ]
我如何做到这一点,以便如果不通过条件,则将该对象从列表中删除?
而不是map
您应该filter
用于过滤数组。您也可以使用includes
。
var data = [ {id:1, name:"Brian", status:"active"}, {id:2, name:"Mary", status:"active"},
{id:3, name:"John", status:"pending"}, {id:4, name:"Steph", status:"pending"},
{id:5, name:"Peter", status:"inactive"}
]
var statusList = [ 'active', 'pending']
var result = data.filter(e => statusList.includes(e.status))
console.log(result)
在ES5和更低版本中,您可以使用indexOf
代替includes
。
var data = [ {id:1, name:"Brian", status:"active"}, {id:2, name:"Mary", status:"active"},
{id:3, name:"John", status:"pending"}, {id:4, name:"Steph", status:"pending"},
{id:5, name:"Peter", status:"inactive"}
]
var statusList = [ 'active', 'pending']
var result = data.filter(function(e) {
return statusList.indexOf(e.status) != -1
})
console.log(result)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句