如何遍历数组并返回包含value为true的元素对象?
解决方法:筛选status数组中含true值的元素
原代码的问题
- 误用了
map方法:map是用来转换数组元素的,不是做筛选逻辑,筛选应该用filter - 拼写错误:
staus应该是status - 类型不匹配:输入数据里的
value是字符串类型的"true"/"false",不是布尔值true,原代码的status.value === true判断会失效 - 回调无返回值:
map的回调里没有写return,最终得到的items会是全undefined的数组
修正后的代码
public displayCondition(data: any[]) { // 筛选出status数组中存在任意一个value为"true"的元素 return data.filter(item => { return item.status.some(statusItem => statusItem.value === "true"); }); }
代码说明
filter:遍历输入的data数组,仅保留回调返回true的元素some:检查当前元素的status数组,只要有一个对象的value等于"true",就返回true,满足筛选条件
测试验证
输入数据:
const data = [ { name: "php", status: [ { value: "true" }, { value: "false" } ] }, { name: "java", status: [ { value: "false" }, { value: "false" } ] } ]
调用displayCondition(data)后,会得到期望输出:
[ { name: "php", status: [ { value: "true" }, { value: "false" } ] } ]
内容的提问来源于stack exchange,提问作者baiju thomas
相关产品推荐
相关产品推荐

