Javascript中数组内对象内数组内的筛选器元素返回一些未定义的值

Javascript中数组内对象内数组内的筛选器元素返回一些未定义的值,javascript,arrays,filter,Javascript,Arrays,Filter,我正在使用一个日语词典API,它允许我输入一个术语并返回一个名词、动词、副词和其他的列表。API返回一个包含对象列表的数组。每个对象都有自己的数组,在其中一个数组中,有一个数组包含我需要的信息,如下所示: {"data":[ { "attribution": {"jmdict": true, "jmnedict": false}, "senses": [

我正在使用一个日语词典API,它允许我输入一个术语并返回一个名词、动词、副词和其他的列表。API返回一个包含对象列表的数组。每个对象都有自己的数组,在其中一个数组中,有一个数组包含我需要的信息,如下所示:

{"data":[  
{
    "attribution": {"jmdict": true, "jmnedict": false},
    
    "senses": [
        {
            "english_definitions": [
                "sleep"
            ],

            "parts_of_speech": [
                "Noun",
                "Ichidan verb"
            ]
        },
        
        {
            "english_definitions": [
                "Sleep"
            ],
            "parts_of_speech": [
                "Ichidan verb", "intransitive verb"
            ]
        }
    ]
}
] }

我想过滤结果,只显示那些动词结果,不包括其他结果

这是我执行筛选的代码:

verbArray = jsonData.data
let verbs2 = verbArray.filter(e => e.senses[0].parts_of_speech[0].includes('verb'));
//console.table(verbs2);
这段代码进行筛选,只给出那些字符串中包含动词的结果。但前提是它位于阵列的一个位置。如果术语位于位置2或位置3,则不会返回您可以使用的

let verbs2 = verbArray.filter(e => e.senses[0].parts_of_speech.some(pos=>pos.includes('verb')));
let verbs2 = verbArray.filter(e => e.senses.some(sense=> sense.parts_of_speech.some(pos=>pos.includes('verb'))));
如果你只想重复演讲的所有部分。Array.prototype.some将检查动词一词的所有词性

如果您还想迭代感官,可以使用

let verbs2 = verbArray.filter(e => e.senses[0].parts_of_speech.some(pos=>pos.includes('verb')));
let verbs2 = verbArray.filter(e => e.senses.some(sense=> sense.parts_of_speech.some(pos=>pos.includes('verb'))));

预期的结果是什么?例如,在这个对API的查询中,它只是在筛选第一个位置包含单词verb的元素。但是,如果单词动词位于第二或第三位置,则不会返回momg!这解决了我几周前的问题。我将更多地研究。一些原型。非常感谢你!!