我正在搜索对象数组。如果item
的状态代码为1
,我要推送到openIssue
,如果它是3
,则要推送到inProgressIssue
。
下面是我的代码:
openIssue = [];
inProgressIssue = [];
issuesNotCompletedInCurrentSprint.filter((item) => {
if (item.statusId === '1') {
openIssue.push(item);
} else if (item.statusId === '3') {
inProgressIssue.push(item);
}
});
我收到一个代码审查评论:
非法使用过滤器
请告诉我我在做什么错了。
答案 0 :(得分:0)
您会收到错误消息,因为filter方法希望您返回布尔值。在这种情况下,您应该使用forEach方法。
答案 1 :(得分:0)
您收到了该错误,因为过滤器希望您返回布尔值,过滤器始终会这样做。是的,filter是一个迭代,但是返回值应为布尔值,这就是它的实现方式, 我建议您使用这样的过滤器,这非常简单。您也可以使用foreach,它不会返回任何内容。
openIssue = issuesNotCompletedInCurrentSprint.filter(a => a.statusId === '1');
inProgressIssue = issuesNotCompletedInCurrentSprint.filter(a => a.statusId === '3');
此处filter将返回statusid
并还原合适的值
let issuesNotCompletedInCurrentSprint = [{
statusId: '1',
name: 'asfadsf'
}, {
statusId: '2',
name: 'asfadsf11'
}, {
statusId: '3',
name: 'asfadsf6636'
}];
let openIssue = [];
let inProgressIssue = []
openIssue = issuesNotCompletedInCurrentSprint.filter(a => a.statusId === '1');
inProgressIssue = issuesNotCompletedInCurrentSprint.filter(a => a.statusId === '3');
console.log('open', openIssue, 'inprogress', inProgressIssue)
答案 2 :(得分:0)
使用forEach
如下:
inProgressIssue = [];
issuesNotCompletedInCurrentSprint.forEach(item => {
if (item.statusId === '1') {
openIssue.push(item);
} else if (item.statusId === '3') {
inProgressIssue.push(item);
}
});
答案 3 :(得分:0)
使用for循环进行简单搜索,
openIssue = [];
inProgressIssue = []
for(let item of issuesNotCompletedInCurrentSprint){
if (item.statusId === '1') {
openIssue.push(item);
} else if (item.statusId === '3') {
inProgressIssue.push(item);
}
};
答案 4 :(得分:0)
过滤器需要返回一个布尔值,因为它要求过滤条件。还会创建一个新的数组。
您可以像这样简单地重写以使用过滤器:
openIssue = issuesNotCompletedInCurrentSprint.filter(item => item.statusId === '1');
inProgressIssue = issuesNotCompletedInCurrentSprint.filter(item => item.statusId === '3');