我的过滤器返回的是整个对象,而不仅仅是属性



我想返回一个id数组,但返回的是整个对象。我有正确的语法吗?

const docIds = this.claim.claimDocuments.filter(doc => {
if (doc.status !== 'Submitted') {
return doc.id;
}
});

filter不会更改数组,它只是选择通过逻辑测试的条目。然后,您需要mapfilter的输出以仅返回id值:

const docIds = this.claim.claimDocuments
.filter(doc => doc.status !== 'Submitted')
.map(doc => doc.id);

如果您想从另一个项目中的一部分项目创建一个数组,同时将每个传递的项目转换为其他项目,则必须使用不同的方法,可能是初始化数组,然后在迭代时推入if

const docIds = [];
for (const doc of this.claim.claimDocuments) {
if (doc.status !== 'Submitted') {
docIds.push(doc.id);
}
}

或使用.reduce:

const docIds = this.claim.claimDocuments.reduce((a, doc) => {
if (doc.status !== 'Submitted') {
a.push(doc.id);
}
return a;
}, []);

或者先用.filter,然后用.map,尽管这需要对某些项迭代两次。

最新更新