gpt4 book ai didi

javascript - 如何在过滤数组时忽略某些对象

转载 作者:行者123 更新时间:2023-12-02 22:55:07 25 4
gpt4 key购买 nike

我有一个数组returnedDocs在我从 API 得到的响应代码(通过 let returnedDocs = result.application.modules.module.moduleItem; 缩写)中,它的结构非常复杂。一些嵌套对象是数组,一些值被放置在结构深处的几层中。

我使用过滤方法来仅获取那些具有特定值的元素。

          let toFilterSix = returnedDocs.filter(
o =>
o.repeatableGroup.repeatableGroupItem.vocabularyReference
.vocabularyReferenceItem.formattedValue._text === "Abdomen"
);
this.filterArray6 = toFilterSix;

通常情况下它工作正常,但在下面的示例中 repeatableGroupItem 之一是一个包含两个元素(图像)的数组。

arrayInArray

由于过滤对象中存在意外数组,我收到错误:

Results.vue?82a0:202 Uncaught (in promise) TypeError: Cannot read property 'vocabularyReferenceItem' of undefined
at eval (Results.vue?82a0:202)
at Array.filter (<anonymous>)
at eval (Results.vue?82a0:201)

在过滤其他非数组元素时如何避免错误?

在这里您可以检查数据模型,它是console.log'ed:https://lucid-villani-539a6f.netlify.com/results

最佳答案

如果您只想忽略数组,则可以简单地测试 repeatableGroup 是否具有 vocabularyReferences 属性。

let toFilterSix = returnedDocs.filter(
o =>
o.repeatableGroup.repeatableGroupItem.vocabularyReference &&
o.repeatableGroup.repeatableGroupItem.vocabularyReference.vocabularyReferenceItem.formattedValue._text === "Abdomen"
);

如果您也想搜索数组,则可以使用 if 语句在数组为数组时进行搜索。

let toFilterSix = returnedDocs.filter(
o => {
if (Array.isArray(o.repeatableGroup.repeatableGroupItem)) {
return o.repeatableGroup.repeatableGroupItem.some(el => el.vocabularyReference.vocabularyReferenceItem.formattedValue._text === "Abdomen");
} else {
return o.repeatableGroup.repeatableGroupItem.vocabularyReference.vocabularyReferenceItem.formattedValue._text === "Abdomen";
}
});

关于javascript - 如何在过滤数组时忽略某些对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58018385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com